更新“状态”时损失增加

问题描述

我想更新状态,所以这是我写的:

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?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...