cnn训练准确率很高,测试准确率很低(loss有一直下降)是为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cnn训练准确率很高,测试准确率很低(loss有一直下降)是为啥?相关的知识,希望对你有一定的参考价值。

tensorflow模型,4层cnn。数据有shuffle, 有用dropout层,有用l2正则化,都没啥用,训练准确率很高,能到达1,测试准确率很低,保持在0.5左右,但是loss有一直下降),请问是什么原因呢?

可能的原因:

    有可能是层数较少,可以尝试增加卷积层;可能性不大。

    之前我有出现过类似的情况,数据本身质量太低,就算训练层可以保证很高的准确率也没有什么意义,此时已经过拟合了。 这种情况是没有办法的,因为你的数据本身就有问题,无解。  你可以尝试用 机器学习的方法提取特征值 来验证, 如果此时准确率比CNN结果要好,那么就是你网络本身的问题,如果准确率也很差, 那就应该是你数据本身质量的问题。

参考技术A 刚刚学习TensorFlow,在处理图片分类的问题中发现训练的准确率很低,只有20%,只不过识别的数据集是我自己的数据集,是一些信号图片,图片是256*128的,当时用这个例子识别2种信号时准确率很高,现在识别5种信号,准确率就只有20%,训练损失到是会下降,但是准确率基本不变在训练cnn的过程中,训练集准确率逐渐升高,loss平稳下降,但是测试集动荡剧烈 参考技术B 如果他的训练准确度很高,那么说明机器性能是没有问题的,
但是测试准确率低可能是你们把机器拿来之后设置有问题。
参考技术C 说明两者不协调,还得努力 参考技术D 请问cnn在这段语句里面表示什么意思?

深度学习,Loss不减

【中文标题】深度学习,Loss不减【英文标题】:Deep learning, Loss does not decrease 【发布时间】:2016-03-30 00:58:18 【问题描述】:

我尝试使用包含 20 个类的训练集微调预训练模型。需要提到的重要一点是,即使我有 20 个类,一个类包含 1/3 的训练图像。这是我的损失没有减少,测试准确率接近 30% 的原因吗?

感谢您的建议

【问题讨论】:

【参考方案1】:

是的,您的网络很可能过度拟合不平衡标签。一种解决方案是您可以对其他标签执行数据增强以平衡它们。例如,如果您有图像数据:您可以进行随机裁剪、进行水平/垂直翻转,以及各种技术。

编辑:

检查您是否过度拟合不平衡标签的一种方法是计算网络预测标签的直方图。如果它高度偏向不平衡类,您应该尝试上述数据增强方法并重新训练您的网络,看看是否有帮助。

【讨论】:

Al 我的网络不是过拟合而是欠拟合。测试准确度为 30%,无论我做出什么改变,准确度都是稳定的。【参考方案2】:

我有类似的问题。我通过增加神经网络权重初始值的方差来解决它。这用作神经网络的预处理,以防止权重在反向传播期间消失。

我在 Jenny Orr 教授的课程中遇到了neural network lectures,发现它非常有用。 (刚刚意识到 Jenny 早年与 Yann LeCun 和 Leon bottou 共同撰写了许多关于神经网络训练的论文。

希望对你有帮助!

【讨论】:

以上是关于cnn训练准确率很高,测试准确率很低(loss有一直下降)是为啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 cross_val_score() 准确度很高,但我的测试准确度却很低?

CNN分类中验证损失减少,验证准确率下降

CNN 训练准确率在训练期间变得更好,但测试准确率保持在 40% 左右

tensorflow 保存好训练的模型,restore 后验证集的正确率很低

如何调用caffe已经训练好的net

Keras - 整个训练过程中的 Loss Nan 和 0.333 准确率