train loss下降后上升趋于稳定,test loss一直震荡

有朋友知道这是什么原因吗。训练50次,测试一次。我记录其中一部分的loss曲线,因为就算训练结束,测试准确率也是一直震荡。

img

过拟合了,可以添加BN层或者Dropout层

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7788527
  • 除此之外, 这篇博客: loss(损失函数)在训练集(train loss)和测试集(test loss)上出现的问题总结中的  在机器学习的过程中,我们在模型建立时,在实际测试集和训练集上误差函数可能会出现变化不一致情况。下面我简单的总结一下 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

  • 以下回答由chatgpt基于相关博客总结生成:

    针对问题所描述的情况,train loss在一定程度下趋于稳定,而test loss却始终震荡不定。这可能是由于网络在训练过程中出现过拟合的现象,导致测试集上的表现不如训练集上的表现。 为了解决这个问题,可以尝试以下几种方法: 1. 数据增强:在训练数据中增加一些随机的变换,如旋转、平移、缩放等,增加数据的多样性,减少过拟合的风险。 2. 加入正则化:在网络的loss函数中加入正则项,如L1、L2正则,惩罚过大的权重,防止网络过拟合。 3. 降低网络复杂度:减少网络中的层数或神经元数量,以及调整网络的结构,以减少过拟合的风险。 4. 尝试不同的优化器或学习率:尝试使用其他的优化器,如Adam、RMSProp等,并调整学习率,以获得更好的训练结果。 此外,也可以通过观察训练集和验证集上的loss趋势,来判断网络的训练状况和存在的问题。可以借助代码工具,如上面提到的plot_shift.py,可以可视化不同epoch下的训练集和验证集的loss趋势,来更加深入地了解网络的训练过程和存在的问题。