Cho*_*One 5 python keras tensorflow tensorflow2.0
在 Python 中的 Tensorflow 2.0 中训练神经网络时,我注意到训练精度和损失在不同时期之间发生了巨大变化。我知道打印的指标是整个 epoch 的平均值,但在每个 epoch 之后准确率似乎显着下降,尽管平均值总是在增加。
损失也表现出这种行为,每个时期显着下降,但平均值增加。这是我的意思的图像(来自 Tensorboard):
我在我自己实现的所有模型上都注意到了这种行为,所以这可能是一个错误,但我想就这是否是正常行为以及如果是这样意味着什么?
另外,我使用了一个相当大的数据集(大约 300 万个示例)。批次大小为 32,准确率/损失图中的每个点代表 50 个批次(图中 2k = 100k 批次)。批次的学习率图是 1:1。
这种现象似乎来自这样一个事实,即模型在准确性和损失方面具有较高的批次间差异。如果我用每一步的实际指标绘制模型图,而不是整个时期的平均值,就可以说明这一点:
在这里您可以看到模型可以有很大差异。(此图仅适用于一个时期,但事实仍然存在)。
由于平均指标是每个 epoch 报告的,因此在下一个 epoch 开始时,平均指标很可能低于前一个平均值,导致运行平均值急剧下降,如下图红色所示:
如果您将红色图中的不连续性想象为纪元转换,您就会明白为什么会观察到问题中的现象。
TL;DR 该模型在每个批次的输出中具有非常高的差异。
归档时间: |
|
查看次数: |
4456 次 |
最近记录: |