我正在使用 Keras 的 cifar10 示例,您可以在这里找到它。我已经重新创建了模型(即,不是相同的文件,但其他所有内容几乎相同),您可以在here找到它。
模型是相同的,我在 50,000 个图像训练集上使用 0.2 验证分割训练模型 30 个时期。我无法理解我得到的结果。我的验证和测试损失小于训练损失(相反,训练准确性低于验证和测试准确性):
Loss Accuracy Training 1.345 0.572 Validation 1.184 0.596 Test 1.19 0.596
看看这个图,我不确定为什么训练误差再次开始如此严重地增加。我是否需要减少训练的 epoch 数量或者实施提前停止?不同的模型架构会有帮助吗?如果可以的话,有什么好的建议吗?
这是一种罕见的现象,但时有发生。造成这种情况的原因有多种:
Marcin 的回答很好。训练误差过高还有另外几个重要原因:
辍学。 Dropout 层在训练中“打开”,但在进行验证和测试时将“关闭”(跳过)。这是自动的并且是设计使然的。 Dropout 对训练误差有轻微影响。这是可以预料的。尽管存在额外的训练挑战,但 Dropout 层实际上有助于深度神经网络的正则化。大多数深度神经网络可能使用 dropout。
学习率太高。这就像将一枚硬币扔进玻璃杯中一样。扔得太用力它会跳出来。