Closed 0653174 closed 1 month ago
还有一个问题,你这个得到测试集的准确率是: 使用本地模型的参数进行测试以 得到测试集正确的样本数目。 但是由于是先运行全局模型传递给本地模型的(self.send_models()),所以实际上开始评估的时候( self.evaluate()),各个客户端的模型的参数实际上是相同的,变相的就是全局模型在不同客户端测试得到结果的效果是吗?
本仓库中保存的.h5文件是为防止某些不可预料的问题,提供的一种实验数据记录的备用手段。一般不推荐使用.h5来读取实验结果,建议直接查看print的输出。我们提供了get_mean_std.py
工具来计算最佳结果。AUC指标在FL领域中不常用,所以只通过print显示,并未保存到.h5文件。
关于第二个问题,不同的联邦学习算法中计算准确率的细节不同(毕竟有些方法有个性化模块),不能一概而论。对于FedAvg来说,我们参考业内的常见做法,测的全局模型在本地数据上的表现。
在https://github.com/TsingZ0/PFLlib/blob/master/system/flcore/servers/serverbase.py 的244行,即 def evaluate之中,缺乏test_auc数据的储存。 在第262行之后是否应该加上 self.rs_test_auc.append(test_auc) 使得数据test_auc通过self.rs_test_auc得以保存,这样后续以.h5保存不会使得部分数据变成空数据。