收集客户端返回的权重而不聚合它们

问题描述

我想知道创建模型的最简单方法,使用 tensorflow 联合广播它,运行一个循环并收集客户端返回的权重,而不用 fedavg 聚合它们。

解决方法

TFF 为此提供了 tff.federated_collect 内在函数;它在服务器上实现了客户端数据流。

将其连接到大多数存在的联邦过程的内部的一种简单方法是派生 simple_fedavg,我认为这是使用 TFF 的较低级别功能的合理起点。

这里有几点需要注意。首先,据我所知,没有任何“生产”系统支持 federated_collect。其次,根据您的愿望,可能有一个更简单、更直接的解决方案:只需返回客户端权重。 TFF 运行时将具体化客户端权重的 Python 列表(我相信是渴望张量),您可以在其上执行任意的 Python 后处理。

要从 simple_fedavg 到达这里,您可以有效地 return the client_outputs directly 而不是将它们传递给 tff.federated_mean。这将为您提供客户端增量(即,最终客户端权重与初始客户端权重之间的差异);但是,如果需要,您可以简单地修改 client_update 以避免计算这种差异。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...