我正在通过tensorflow联邦实现联邦学习。本教程和所有其他可用的材料比较了联邦(全局)模型在每一轮通信之后的准确性。是否有一种方法可以计算每个局部模型与联邦(全局)模型的准确性。
摘要:客户总数:每轮通信15次:本地与联邦模型性能
参考文献:
发布于 2021-11-09 01:29:34
我不知道如何使用tff.learning.build_federated_averaging_process实现这一点,但我建议您看看这个简单的fedavg实现。在这里,您可以对每个客户端使用与服务器模型相同的test_data -the计算数据集。我建议你去做client_test_datasets = [test_data for x in sampled_train_ids]。然后将其作为iterative_process.next(server_state, sampled_train_data, client_test_datasets )传递。在这里,您需要更改run_one_round和client_update_fn在simple_fedavg_tff.py中的签名。在每种情况下,来自测试数据集的签名应与训练数据集的签名相同。不要忘记实际通过适当的测试数据集作为每个测试数据的输入。现在转到simple_fedavg_tf.py,并更改您的client_update。在这里,您基本上需要编写非常类似于服务器模型的评估。然后,如果希望或更改每个级别的(tf.function, tff.tf_computation, and tff.federated_computation)的输出,则打印评估结果,并将eval结果作为输出传递。如果您这样做,不要忘记更新iterative_process.next的输出。
编辑:我认为当测试数据集与服务器测试数据集相同时,您需要客户端的准确性。
https://stackoverflow.com/questions/69891610
复制相似问题