【发布时间】:2019-07-11 13:07:28
【问题描述】:
我试图为联合平均编写一个自定义聚合函数。替换“federated_mean”似乎非常复杂,而且代码很难破译。是否有关于这些“内在”的任何文档/示例? (代码中这样调用)
谢谢!
【问题讨论】:
我试图为联合平均编写一个自定义聚合函数。替换“federated_mean”似乎非常复杂,而且代码很难破译。是否有关于这些“内在”的任何文档/示例? (代码中这样调用)
谢谢!
【问题讨论】:
感谢您对 TFF 的关注!
从长远来看,我们肯定计划公开以一种简单的方式编写用户定义的内在函数的能力,但我们还没有完全做到。
然而,为了实现自定义聚合,我们提供了 tff.federated_aggregate 内在函数,这是一个通用的分层聚合函数,它采用五个参数:
{T}@C 类型的值,要聚合的联合数据集。U 类型,表示归约代数中的零。<U,T> -> U 类型的函数,将用于逐点减少联合数据集。 Accumulate 在层次结构的中间层实现了一组 U 类型的值。<U,U> -> U 类型的函数,其使用方式类似于累加,不同之处在于现在在层次结构的顶层实现U 类型的单个值。U -> R 类型的函数,用于对聚合值执行任何最终计算。例如,可以通过累积和合并值的总和以及客户端数量的计数,然后在报告步骤中将总和除以计数来实现联合平均值。用这五个参数调用联合聚合的结果是一个R@S类型的值。
上面链接的文档进一步讨论了federated_aggregate 本身。有关如何使用它来编写新聚合的示例,请查看 this commit 实现 federated_min 和 federated_max。
希望这会有所帮助!
【讨论】:
federated_collect。