0

custom_federated_algorithms_2 教程介绍了一个使用tff.federated_computation.

有一条评论说“虽然我们可以完全在 TensorFlow 中实现这个逻辑,但依赖于tf.data.Dataset.reduce......”:

关于此评论:

  1. 我没有设法将代码实际转换为 usingtf.data.Dataset.reduce似乎不简单,调试注释真的无济于事
  2. 我想知道在这种情况下使用 federated_computation 的动机是什么,我查看了所有指南,并且确实找到了关于这里发生的事情以及我们应该何时使用它的解释。

谢谢!

4

1 回答 1

1

按顺序解决这两个问题:

  1. 修改直接给出的代码以供使用可能并非易事tf.data.Dataset.reduce;该评论旨在指出此处表达的逻辑也可以使用 dataset-reduce 原语来表达,因为它实际上只表示局部减少,此处没有跨位置的通信。
  2. 这个演示至少有两个不同的目的。一是表明 TFF 作为一种语言并不一定依赖于 TensorFlow 的图内循环结构;另一个是演示使用联合计算装饰器“捕获”值的能力。这可用于通过评估轮数的函数并以上述方式关闭它来本地捕获 TFF 中的学习率衰减之类的东西,尽管还有其他方法可以实现类似的功能,例如此处所示。

我个人觉得这种模式有点混乱。稍微阅读一下问题背后的问题,我同意federated_computation在没有通信发生的情况下使用装饰器会令人困惑。在编写 TFF 时,我通常在 TensorFlow 中适当地表达我所有的本地计算(通常以函数方式),并让 TFF 只处理通信。第二个教程的目的是展示 TFF 本身实际上比限制自己使用刚刚描述的模式更灵活。

于 2020-05-11T19:49:21.997 回答