1

我已经准确地阅读和研究了 TFF指南API页面。但我对一些细节部分感到困惑。

例如,当我想包装/装饰一个TF/python函数时,使用下面这两个 API:

1. tff.tf_computation()
2. tff.federated_computation()

我找不到它们之间的区别以及何时允许使用它们。特别是,如果我想使用除FedAvgFedSgd之外的其他算法。我想知道你是否知道:

  1. 它们如何被用来操纵输入?他们在@CLIENT@SERVER上工作吗?
  2. tff.federated_mean除了输出或tff.federated_sum值将在服务器中 之外,我如何在其他用途​​中使用它们?
  3. 我如何能够访问@CLIENT@SERVER中的数据和指标的详细信息?
  4. 为什么我们应该调用tff.tf_computation()from tff.federated_computation()?在这个链接中,没有关于它们的任何解释。
  5. 这些 API(例如tff.federated_meantff.federated_sum)是否修改每个@CLIENT 的输出元素并将它们带到@SERVER?

谁能帮我理解这个概念背后的直觉?

4

1 回答 1

1

关于不同函数装饰器的一个可能的经验法则:

  • tff.tf_computation用于包装 TF 逻辑。想想“张量入,张量出”:这应该与 的用法非常相似tf.function,其中参数和返回值是张量,或张量的嵌套结构。TFF内在函数(例如tff.federated_mean)不能在 a 中使用tff.tf_computationtff.tf_computations也不能调用tff.federated_computations。类型签名始终处于未放置状态。

  • tff.federated_computation应该用于包装 TFF 编程抽象。想想“这里的张量,那里的张量”:在这个上下文中,atff.tf_computation可以应用于tff.Values 并且tff.Values 可以使用内在函数传递到其他位置。类型签名可以接受联合类型(即带有展示位置的类型)。

对于您的问题清单:

  1. 两者都可以处理置于CLIENTS或的值SERVER。例如,tff.tf_computation调用my_comp可以应用于v类型int32@CLIENTS为 with的值tff.federated_map(my_comp, v),它将my_comp在每个客户端上运行。
  2. tff.federated_map()支持将计算逐点(跨客户端)应用于不在服务器上的数据。您可以使用tff.federated_map. TFF 不适用于不同客户端的单独选项;抽象不支持寻址个人。您可以在 Python 中模拟这一点,请参阅对服务器和客户端之间的通信执行的操作
  3. 放置数据的值可以在模拟中检查,只需从 a 返回tff.Computation并调用该计算即可。这些值应该在 Python 环境中可用。
  4. tff.tf_computations 应该可以从任何地方调用,如果有文档另有说明,请指出它。我相信想要强调的是 atff.federated_computation可以调用 a tff.tf_computation,但反之则不然。
  5. 教程(用于图像分类联邦学习和用于文本生成的联邦学习)展示了在模拟中打印出指标的示例。您可能还对如何在 tensorflow federated 中打印本地输出的答案感兴趣?
  6. tff.tf_computations如果需要,应直接执行。这将避免 TFF 的任何联合部分,并简单地委托给 TensorFlow。要将计算应用于联合值并与联合内部函数结合使用,必须在tff.federated_computation.
于 2019-06-11T17:26:18.193 回答