在深度学习中,测试集的效果明显不如训练集,但是训练集已经接近100%的正确率,且模型只有三层CNN,这时候是应该做过拟合处理还是应该加深网路?


参数越少越不容易过拟合,但表示能力会有所下降。

如果你的CNN只有三层结构,明显是特征提取不足,我很好奇你的训练集为什么表现这么好……

推荐加深卷积层,精简全连接层,再试一试。


训练集评估指标很好高,测试集评估指标很低,大概率是过拟合;

训练集评估指标不高,大概率是欠拟合。


1. 数据增强,整体增加训练样本量。至少做到几十倍的样本扩充。

2. 对样本较少的类别,多做一些增强,多的少一些,消除样本不均衡。

3. 如果网路是自己搭建的一个比较浅层的卷积网路,注意全连接层的节点数不要太多,训练时一定要用dropout

4. 注意权重的初始化方式。可以用一个稍大的初始学习率,1e-2甚至1e-1

5. 可以适当再加几层卷积层。

6. 训练集和验证集的比例应当保持在8:2或9:1,验证集数据不宜超过30%,看你的回答里貌似比例达到了1:1。另外可以采用k折交叉验证。


训练集准确率: 99 %

训练集的混淆矩阵:[[47207 1][ 0 3786]]

测试集准确率: 98 %

测试集的混淆矩阵:[[46217 247][ 539 2680]]

因为正负样本不均衡,所以我还想再提高下测试集的[0,1]类的准确率,下一步该怎么做?


训练集百分之一百指的loss吗

这种情况就是过拟合了

要不就是网路性能太强 参数太多

要不就是数据过于简单 或者训练集容量太小

只能说参考一下数据增强 或者更换网路来做了

不大理解前面说的权重初始化调整对这个有什么影响 不是为了加快训练速度吗 应该不影响训练最终结果吧


可以用TensorBoard看训练集和测试集的loss的变化曲线。训练集上达到100%的准确率肯定是过拟合了。我估计应该是数据量太小…


推荐阅读:
相关文章