1

我已经阅读了 tensorflow-federated 给出的四篇教程。但是,只是简单地提到了tff_core可以用于实现多层网络,没有任何详细说明。在我的实现中,我想设计一个三层网络,其中包含不同大小的客户端子集。我的问题是:

  1. 目前,我只是使用 python 代码来表示子集级别的学习。有什么 API 可以用来替换我的 python 代码吗?

  2. 我对声明客户端数量有点困惑,联邦核心教程的第二部分只是federated_map(local_train, [model, learning_rate, data])用来实现这一点。这是否意味着客户端的数量,在这种情况下,是数据数组中的元素数量?

  3. 除了问题 2,本教程tff.federated_broadcast还用于将模型和学习率传递给所有客户端。如果我有一个三层架构,那tff.federated_broadcast还有意义吗?

  4. 最后,对于二层服务器,我应该把它当作SERVERorCLIENTS吗?

4

1 回答 1

0

TFF 的设计确实支持额外的放置级别,但目前只有两个罐头放置:CLIENTSSERVER. 此外,一些内在函数仅支持特定的放置更改(例如,tff.federated_broadcast将数据从 移动SERVERCLIENTS,但不能广播数据从CLIENTSCLIENTS)。尚未实施对自定义展示位置的支持。

根据多层网络的配置方式,它现在可能仍然可以在 TFF 中表达;尽管由于缺少额外的展示位置标签而有点不清楚。

  1. 目前这必须在 Python 级别完成,尚不支持。
  2. 正确,客户端的数量是数组中元素的数量。TFF 通过客户端持有的数据参数化客户端。为了实现两组客户端,代码可以有两个不同的参数列表(可能具有不同的大小)。
  3. 取决于要达到的目标。答案可能会根据目标是对一组具有不同值的设备进行建模,还是全部保持相同的值而改变。
  4. 可能需要更多信息,答案将取决于如何使用第二层。
于 2019-07-30T16:31:20.943 回答