Tensorflow Federated 中的本地模型性能
Local Model performance in Tensorflow Federated
我正在通过 tensorflow-federated 实现联邦学习。本教程和所有其他可用的 material 比较了每轮通信后联合(全局)模型的准确性。有没有一种方法可以计算每个本地模型的准确性,以便与联合(全局)模型进行比较。
总结:
客户总数:15
对于每一轮通信:本地与联合模型性能
参考文献:
我不知道如何使用 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.py
中 run_one_round
和 client_update_fn
的签名。在每种情况下,测试数据集的签名应与训练数据集的签名相同。不要忘记实际传递适当的测试数据集作为每个数据集的输入。现在转到 simple_fedavg_tf.py
并更改您的 client_update
。在这里,您基本上需要编写与服务器模型非常相似的评估。此后,如果您愿意,可以打印评估结果或更改每个级别的输出 (tf.function, tff.tf_computation, and tff.federated_computation)
并将评估结果作为输出传递。如果你这样做,不要忘记更新 iterative_process.next
的输出
编辑:当测试数据集与服务器测试数据集相同时,我假设您想要客户端的准确性。
我正在通过 tensorflow-federated 实现联邦学习。本教程和所有其他可用的 material 比较了每轮通信后联合(全局)模型的准确性。有没有一种方法可以计算每个本地模型的准确性,以便与联合(全局)模型进行比较。
总结: 客户总数:15 对于每一轮通信:本地与联合模型性能
参考文献:
我不知道如何使用 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.py
中 run_one_round
和 client_update_fn
的签名。在每种情况下,测试数据集的签名应与训练数据集的签名相同。不要忘记实际传递适当的测试数据集作为每个数据集的输入。现在转到 simple_fedavg_tf.py
并更改您的 client_update
。在这里,您基本上需要编写与服务器模型非常相似的评估。此后,如果您愿意,可以打印评估结果或更改每个级别的输出 (tf.function, tff.tf_computation, and tff.federated_computation)
并将评估结果作为输出传递。如果你这样做,不要忘记更新 iterative_process.next
编辑:当测试数据集与服务器测试数据集相同时,我假设您想要客户端的准确性。