问题描述
我想更新状态,所以这是我写的:
def create_keras_model():
...
return model
iterative_process = tff.learning.build_federated_averaging_process(..)
我的问题是损失的增加与精度的下降相反:
round 1,metrics=OrderedDict([('categorical_accuracy',0.4675926),('loss',8.581259)])
round 2,0.65625),5.4126678)])
round 3,0.6018519),6.37924)])
round 4,0.587963),6.5979366)])
round 5,0.6400463),5.7463913)])
round 6,0.6909722),4.872179)])
round 7,0.6469907),5.6218925)])
round 8,0.7037037),4.723536)])
round 9,0.7002315),4.774122)])
round 10,0.7060185),4.6346316)])
round 11,0.6724537),5.213738)])
round 12,0.6608796),5.450448)])
解决方法
这些是培训指标还是测试指标?值得注意的是,训练指标在联邦学习中具有“奇怪”的行为;见MSE error different during training and evaluation in tensorflow federated。
如果 create_keras_model
正在加载已经准确了解数据分布的预训练权重,这可能是一些微调步骤。但是,如果这些是训练指标,则它们可能无法说明全部情况(如上所述)。我还建议多跑几轮,在联邦学习中,10 轮通常是不够的。
有关解释机器学习指标的更多信息,请参阅How to interpret increase in both loss and accuracy?。