我在Audioset2017数据集上训练ResNet50,使用tensorflow进行训练和验证时,我的损失函数波动很大,虽然整体趋势是下降的,但我对此感到担忧。
我已经运行了100个周期,批量大小为100,并且尝试过降低和增加学习率,但都没有效果。
我想知道我的训练是否正确,我可以使用这个网络吗?还是它会导致错误的结果。我能用一些技巧来消除这些波动吗?这些是我在tensorboard中看到的训练和验证(评估)损失以及其他指标的图片。
回答:
看起来在12k步之后,模型开始过拟合。训练损失进一步下降,而验证损失(泛化误差)又缓慢上升。在这一点之后,继续训练模型只会使情况变得更糟。
在下图中,你处于过拟合区。
你可能需要通过增加正则化来减少模型对训练数据的过拟合能力。例如,L2权重正则化或dropout。
至于振荡。考虑到你的批量大小为100,这些振荡可能是自然的。