首页 > 解决方案 > Keras 损失在 epoch 结束时的变化

问题描述

我正在使用 imagedatagenerator 类在 Keras(tensorflow2 后端)中训练一个模型来批量训练。我注意到,当第二个时期开始时,损失值实际上小于第一个时期结束时的值。

这就是我的意思:

凯拉斯损失

请注意,第二个时期的起始值大约是您在屏幕截图中看到的值。

有谁知道为什么会这样?

处理完所有批次后,keras 是否会再次更新权重?

标签: machine-learningkerastensorflow2.0

解决方案


预计损失会更小,但您对它的惊讶程度是可以理解的。

第二个时期损失如此之低的原因是因为在第一个时期你的模型犯了错误并产生了巨大的损失——变得越来越好。Keras 显示一个时期内所有实例的平均损失。

因此,如果模型在 epoch 的前 90% 的训练集上犯了错误,然后在最后 10% 的数据上是完美的,那么损失仍然会很大,因为它是平均损失。

然后,在第二个 epoch 开始时,模型已经更好地预测,因此平均损失更低。


推荐阅读