2

我正在通过 tensorflow-federated 实施联合学习。本教程和所有其他可用材料在每一轮通信之后比较了联合(全局)模型的准确性。有没有一种方法可以计算每个本地模型的准确性以与联合(全局)模型进行比较。

摘要:客户端总数:15 每轮通信:本地与联合模型性能

参考:

  1. https://colab.research.google.com/github/tensorflow/federated/blob/main/docs/tutorials/federated_learning_for_image_classification.ipynb#scrollTo=blQGiTQFS9_r
4

1 回答 1

1

我不知道你怎么能做到这一点,tff.learning.build_federated_averaging_process但我建议你看看这个简单的 fedavg 实现。在这里,您可以为每个客户端使用 test_data - 您在服务器模型中使用的相同评估数据集。我建议你这样做client_test_datasets = [test_data for x in sampled_train_ids]。然后将其传递为iterative_process.next(server_state, sampled_train_data, client_test_datasets ). 在这里,您需要更改 和run_one_roundclient_update_fn签名simple_fedavg_tff.py。在每种情况下,测试数据集的签名应与训练数据集的签名相同。不要忘记实际传递适当的测试数据集作为每个的输入。现在继续simple_fedavg_tf.py并更改您的client_update. 在这里,您基本上需要编写与为服务器模型所做的评估非常相似的评估。此后,如果您愿意,可以打印评估结果或更改每个级别的输出(tf.function, tff.tf_computation, and tff.federated_computation)并将评估结果作为输出传递。如果你这样走,别忘了更新输出iterative_process.next

编辑:当测试数据集与服务器测试数据集相同时,我假设您想要客户端的准确性。

于 2021-11-09T01:29:34.350 回答