【发布时间】:2020-11-09 11:22:08
【问题描述】:
为了操纵我的模型的指标,我想知道,我看到 federated_train_data 的损失或 federated_test_data 的损失?
我读到了:
训练损失看起来比评估损失好得多:当使用联合平均(图像分类的联合学习教程中使用的优化算法)时,需要仔细解释指标,因为它们与集中模型训练有细微差别。尤其是训练损失,它是许多序列步骤或批次的平均值。这意味着在一轮之后,每个客户端可能已经很好地将模型与他们的本地数据拟合(获得了很高的准确性),但是在将这些更新平均到全局模型中之后,全局模型可能仍然远离“好”,导致测试准确率低。此外,10 轮可能太少;一篇关于联邦学习的原始学术论文展示了至少 20 轮,直到 99% 的准确率(McMahan 2016),以及非 IID 数据的 100 多轮。
所以我想知道哪个更适合使用此代码评估指标:
evaluation = tff.learning.build_federated_evaluation(model_fn)
test_metrics = evaluation(state.model, federated_test_data)
或者这个:
evaluation = tff.learning.build_federated_evaluation(model_fn)
metrics = evaluation(state.model, federated_train_data)
谢谢
【问题讨论】: