Tensorflow 图像网络上的交叉熵损失周期性地上升和下降

Tensorflow 图像网络上的交叉熵损失周期性地上升和下降,tensorflow,machine-learning,cross-entropy,Tensorflow,Machine Learning,Cross Entropy,我正在使用由生成的TF记录培训我的mobilenet v3。培训损失w.r.t步骤如下图所示。x轴上的单位长度为20k步(由于批次大小为128和1281167个样品,因此大约为2个时期) I指数衰减学习率0.01,每3个阶段有阶梯,损失在前4个阶段正常下降。然而,在第四个纪元之后,每一个纪元的损失都会上升和下降。我尝试过动量优化器(涂成橙色)和rmsprop优化器(涂成蓝色),然后得到了类似的结果。请帮我解决这个问题 几乎可以肯定,周期性与一个完整的纪元一致 对于您的模型来说,不同批次的损耗存在

我正在使用由生成的TF记录培训我的mobilenet v3。培训损失w.r.t步骤如下图所示。x轴上的单位长度为20k步(由于批次大小为128和1281167个样品,因此大约为2个时期)

I指数衰减学习率0.01,每3个阶段有阶梯,损失在前4个阶段正常下降。然而,在第四个纪元之后,每一个纪元的损失都会上升和下降。我尝试过动量优化器(涂成橙色)和rmsprop优化器(涂成蓝色),然后得到了类似的结果。请帮我解决这个问题


几乎可以肯定,周期性与一个完整的纪元一致

对于您的模型来说,不同批次的损耗存在随机变化是很自然的。当重量稳定下来时,你会看到这种随机变化一次又一次地重复,所以你只会看到(大致上)每个批次在每个历元中一次又一次地出现相同的损失


我不确定它是否需要故障排除,但如果你真的想避免它,你可以在不同时期之间洗牌你的数据集

我制作tf数据集的顺序是:预处理->洗牌(1000)->重复->批处理(128)。顺序正确吗?洗牌缓冲区的大小对于图像网络来说是否太小?不确定这里是否有正确和不正确的值。如果您切换
repeat
shuffle
,它将对每个历元进行洗牌。这将消除重复模式,但我不期望性能有任何真正的提高。这种模式之所以引人注目,是因为您的模型或多或少都经过了优化,只是(自然地和预期地)在某些批次上的性能优于其他批次