Tensorflow federated 在tensorflow federated中,如何将不同的培训功能分配给不同的客户端?

Tensorflow federated 在tensorflow federated中,如何将不同的培训功能分配给不同的客户端?,tensorflow-federated,Tensorflow Federated,低级函数tff.federated_-mean(tff.federated_-map(fn,data))将相同的训练函数分配给所有客户端 有什么方法可以为客户分配不同的培训功能吗?TFF的设计并不真正允许为不同组中的客户寻址。这是出于设计,因为通常在联合学习中,应该将客户机组视为单个对象。打开大门,以不同的方式对待不同的客户,似乎会导致收集个人观察结果,这与“一切都在一起”的理念背道而驰 然而,这并不意味着TFF不支持这种愿望。这里有几个选项 首先,值得注意的是,当您编写TFF时,您通常在三个不

低级函数
tff.federated_-mean(tff.federated_-map(fn,data))
将相同的训练函数分配给所有客户端


有什么方法可以为客户分配不同的培训功能吗?

TFF的设计并不真正允许为不同组中的客户寻址。这是出于设计,因为通常在联合学习中,应该将客户机组视为单个对象。打开大门,以不同的方式对待不同的客户,似乎会导致收集个人观察结果,这与“一切都在一起”的理念背道而驰

然而,这并不意味着TFF不支持这种愿望。这里有几个选项

首先,值得注意的是,当您编写TFF时,您通常在三个不同的层次上进行编写。您正在编写纯TensorFlow来表示单独的计算单位,例如每个客户机将要做什么,或者自定义聚合函数。您之所以编写“原生TFF”,是因为没有更好的术语来表示编排逻辑,将这些计算单元连接在一起。这方面的示例包括您对上面的
federated\u map
federated\u mean
的调用。最后,您正在编写Python来推动您的实验。这方面的一个例子是将Python列表传递给在客户端接受联邦值的计算

有鉴于此,编写不同对待两组客户机的TFF计算的一种方法就是编写两个不同的TFF计算并在这些不同的组上调用它们。也就是说,您可以在python级别保持组的分离,这样TFF就不会意识到需要分离这些客户机组

另一个可能有助于突出显示的选项是允许客户端选择他们希望运行的计算。这方面的一个例子是下面的
tf\u计算

@tff.tf_计算(tf.int32)
def foo(x):
如果x>0:
返回杆(x)
返回baz(x)
其中
bar
baz
也是
tfu计算的实例

然后可以通过
联邦映射
将此计算应用于单个客户机组

如果将客户机组建模为包含一个指示符位,则此选项可能与第一个选项相结合,这样就不必使用表示放置在客户机上的数据集的
tf.data.Dataset
s列表,这表示为元组列表,元组的第一个元素是数据集,第二个元素是int,允许客户机确定它们所在的“组”


希望这有帮助

谢谢你的解决方案。当然,方法1和方法2可以工作。当我尝试实现方式1时,我有另一个问题“如何在python级别保持组拆分”,除了包含指示符位。我只是想在python中保留两个不同的列表,然后将它们分别传递到两个不同的计算中