【问题标题】:writing tensorflow federated aggregation function (e.g., tff.federated_mean)编写 tensorflow 联合聚合函数(例如,tff.federated_mean)
【发布时间】:2019-07-11 13:07:28
【问题描述】:

我试图为联合平均编写一个自定义聚合函数。替换“federated_mean”似乎非常复杂,而且代码很难破译。是否有关于这些“内在”的任何文档/示例? (代码中这样调用)

谢谢!

【问题讨论】:

    标签: tensorflow-federated


    【解决方案1】:

    感谢您对 TFF 的关注!

    从长远来看,我们肯定计划公开以一种简单的方式编写用户定义的内在函数的能力,但我们还没有完全做到。

    然而,为了实现自定义聚合,我们提供了 tff.federated_aggregate 内在函数,这是一个通用的分层聚合函数,它采用五个参数:

    • {T}@C 类型的值,要聚合的联合数据集。
    • 零,U 类型,表示归约代数中的零。
    • Accumulate,<U,T> -> U 类型的函数,将用于逐点减少联合数据集。 Accumulate 在层次结构的中间层实现了一组 U 类型的值。
    • Merge,<U,U> -> U 类型的函数,其使用方式类似于累加,不同之处在于现在在层次结构的顶层实现U 类型的单个值。
    • 报表,U -> R 类型的函数,用于对聚合值执行任何最终计算。例如,可以通过累积和合并值的总和以及客户端数量的计数,然后在报告步骤中将总和除以计数来实现联合平均值。

    用这五个参数调用联合聚合的结果是一个R@S类型的值。

    上面链接的文档进一步讨论了federated_aggregate 本身。有关如何使用它来编写新聚合的示例,请查看 this commit 实现 federated_minfederated_max

    希望这会有所帮助!

    【讨论】:

    • 谢谢!我错过了 federated_aggregate 的重要性,我会检查一下。尽管如此,我还是要问,还有什么比 map-reduce 风格更简单的吗?我知道它是现实世界的表现所必需的,但在考虑现实世界之前,我想尝试一些东西,比如不能很好地转移到 map-reduce 的修剪均值/分位数。
    • 顺便说一句,我最终只是在训练步骤中返回了完整的 federated_map 并使用普通 numPy 计算聚合
    • 我认为这是一个合理的方法。 TFF 可以被认为是一种特定领域的语言,用于指定联合计算——因此,网络的计算模型在某种程度上已经融入其中,或者至少在被视为“可部署”的内容与被视为“可部署”的内容之间存在交互。 TFF 认为“本机可表达”。正因为如此,我认为 TFF 推荐的模拟“新”网络执行模型的方法是在 Python 级别进行,这似乎是您所发现的。您也可以考虑为此目的使用federated_collect
    猜你喜欢
    • 2011-12-01
    • 2017-10-18
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2010-11-03
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多