深度神经网络在训练时,损失出现epoch级的震荡

我在使用对比自监督算法训练网络时,损失函数出现奇怪的变化趋势。就是在一个epoch中,随着训练进行,损失值会正常下降。训练数据是ImageNet的图像,每个batch的数据是随机选取的。
但是一旦进入下一个epoch,损失值又会突然升高,重新下降。损失值的变化趋势如下图(手画的,请见谅~)。

图片说明

请问大家有遇到相同情况的吗?一般是什么原因造成的呢?

首先将样本打乱看看,可能数据前后不一致。导致不同的batch学到的权重有规律地跳跃。