从Keras常见问题解答:
为什么训练损失比测试损失高得多?
Keras模型具有两种模式:训练和测试。在测试时会关闭诸如Dropout和L1 / L2权重正则化等正则化机制。
此外,训练损失是每批训练数据损失的平均值。由于您的模型会随着时间而变化,因此,前几个时期的损失通常高于最后几个时期的损失。另一方面,一个时期的测试损失是使用模型计算的,因为它处于该时期的末尾,因此损失较低。
因此,您所看到的行为并不像阅读ML理论后所看到的那样异常。这也解释了,当您在同一模型上评估训练集和测试集时,突然会得到预期的行为(train acc>
val acc)。我猜想在您的情况下,辍学的存在尤其会阻止准确性在训练过程中达到1.0,而在评估(测试)过程中达到了1.0。
您可以通过添加一个回调来进一步调查,该回调在每个时期保存您的模型。然后,您可以使用两个集合评估每个保存的模型,以重新创建绘图。



