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