keras 为什么每一个时期之后损失会突然下降?

2mbi3lxu  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(96)

我正在使用自定义损失函数(三重损失)与小批量,在历元损失逐渐减少,但就在每个历元后有损失突然下降(appx. 10%的下降),然后逐渐减少在该历元(忽略精度).这是正常的吗?
每个答案和参考这个问题将不胜感激。
第1/5期198/198 [= 0.0016

iqxoj9l9

iqxoj9l91#

注意:这个答案是假设你正在使用Keras --你可能想把这个信息添加到你的帖子中,或者至少添加一个相关的标签。
是的,这是因为显示的值是在epoch上平均的。考虑epoch 1。在训练开始时,损失通常会很大。然后它会减少,但epoch 1的显示值仍然会包括从开始时的大值。例如,假设开始时的损失是0.75,并且线性地减小到0.25,直到第一个时期结束;这将意味着0.5的平均值,这将是时期1所示的值。
一旦epoch 2开始,平均值将被重置,并将再次计算该epoch。让我们继续这个例子,因此在epoch 2开始时损失为0.25,然后线性减少到0。这意味着epoch 2显示的损失将为0.125!然而,更重要的是,它将从0.25开始,因此在epoch开始时,您将看到从epoch 1显示的值0.5大幅下降。

vxf3dgd4

vxf3dgd42#

只要一个时期内的平均损失在以后的时期内继续下降,那么时期内的损失波动(即运行损失)是可以的。关于为什么会有突然的跳跃,也许它收敛得很快。

xienkqul

xienkqul3#

我注意到使用Pytorch训练一个具有三元组损失的模型时,也出现了同样的模式。由于评估损失没有以同样的方式下降,我将其归因于模型已经看到并调整了关于这些样本损失的参数。模型已经从这些三元组中学习过一次,所以它会更好地处理Anchor-Positive距离和Anchor-Negative距离之间的差异。当然,这只适用于你在每个纪元使用相同的三元组。如果你正在进行在线三元组挖掘,并且在每个纪元中出现完全不同的三元组,那么就有别的事情发生了。

相关问题