Tensorflow Federated 中的本地模型性能

Local Model performance in Tensorflow Federated

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

总结: 客户总数:15 对于每一轮通信:本地与联合模型性能

参考文献:

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

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

的输出

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