很高兴看到 tensorflow-federated 现在可以支持分布式训练。我在这里提到了这个例子。但是,似乎训练数据在每个时期都是从服务器发送到客户端的,并且客户端(remote_executor_service)不包含任何数据集。它不同于典型的联邦学习场景。所以我想知道我可以将训练数据分别放在每个客户端上吗?
问问题
295 次
1 回答
1
有两点需要注意:
链接的示例(使用 Kubernetes 进行高性能模拟)正在运行联邦学习模拟。目前 TensorFlow Federated 主要用于执行研究模拟。还没有一种方法可以部署到真正的智能手机上。在模拟中,每个客户端数据集在逻辑上是独立的,但可能物理上存在于同一台机器上。
创建一个
tf.data.Dataset
(例如train_data
教程中的定义)可以被认为是创建一个“读取数据的方法”,而不是实际读取数据本身。例如,添加.batch()
或.map()
调用数据集会返回一个新配方,但实际上并没有具体化任何数据集示例。数据集在调用之前不会被实际读取,或者数据集在循环.reduce()
中被迭代。for
在教程中,数据集“recipe”被发送给远程工作者;在本地训练期间迭代数据集时,远程读取/物化数据(数据本身不会发送给远程工作人员)。
于 2020-05-10T12:29:33.753 回答