我在小批量中使用自定义损失函数(三元组损失),在纪元期间,损失逐渐减少,但在每个纪元之后,损失会突然下降(约下降的 10%),然后在该纪元期间逐渐减少(忽略准确性)。正常吗?
对此问题的每一个答案和参考都将受到赞赏。
纪元1/5 198/198 [================================] - 3299s 17s/步 - 损失:0.2500 - 加速:0.0014 纪元 2/5 99/198 [==============>.........................] - 预计到达时间:26:16 - 损失:0.1220 - 累计:0.0016
注意:此答案假设您正在使用 Keras - 您可能希望将此信息添加到您的帖子中或至少添加相关标签。
是的,这是因为显示的值是历元内的平均值。考虑epoch 1。在训练开始时,损失通常会很大。然后它会减小,但第 1 纪元的显示值仍将包含平均值中从一开始就较大的值。例如,假设开始时的损失为 0.75,并线性下降到 0.25,直到第一个 epoch 结束;这意味着平均值为 0.5,这将是 epoch 1 显示的值。
一旦 epoch 2 开始,平均值就会重置,并将针对该 epoch 再次计算。让我们继续这个例子,因此在 epoch 2 开始时损失为 0.25,并线性减少到 0。这意味着 epoch 2 显示的损失将为 0.125!然而更重要的是,它将在 0.25 开始,因此在纪元开始时,您将看到与纪元 1 所示的 0.5 值相比大幅下降。