python - 验证准确率提高,但验证损失也在增加

标签 python tensorflow machine-learning neural-network conv-neural-network

我正在使用 CNN 网络将图像分为 5 类。我的数据集大小约为 370K。我使用 Adam 优化器,学习率为 0.0001,批量大小为 32。令人惊讶的是,我在各个时期的验证准确性方面得到了提高,但验证损失却在不断增长。

我假设模型对验证集的不确定性越来越低,但准确性更高,因为 softmax 输出的值大于阈值。

这背后的原因是什么?在这方面的任何帮助将不胜感激。 Loss curve

Accuracy curve

最佳答案

正如之前的评论指出的那样,我认为这是过度拟合的情况。过度拟合可能是数据集中高方差的结果。当您训练 CNN 时,它显示出良好的训练误差减少率,从而生成更复杂的模型。更复杂的模型会产生过度拟合,并且当验证误差趋于增加时可以注意到这一点。

Adam 优化器负责学习率、指数衰减以及模型的一般优化,但不会采取任何措施来防止过度拟合。如果您想减少它(过度拟合),您将需要添加正则化技术,该技术将惩罚模型中较大的权重值。

您可以在深度学习书籍中阅读有关此内容的更多详细信息:http://www.deeplearningbook.org/contents/regularization.html

关于python - 验证准确率提高,但验证损失也在增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51321826/

相关文章:

tensorflow - 在神经网络中使用卷积层

python - Django ORM 左连接与 GROUP BY 和 SUM

python - django-admin makemessages => 用我的翻译所有的 django 包

python - 计算 scipy.sparse 矩阵的伪逆矩阵的列子集的最快方法

python - 如何使用 Keras 作为高级 API 在 tensorflow 上实现批量归一化

python-3.x - 如何对数据进行 min_max 标准化

python - 使用 Python 的 SSO 的 SPNEGO(kerberos token 生成/验证)

tensorflow - Tensorflow 中基于 CuDnnGRU 的 RNN 实现的简单示例

python - 是否有任何使用 TensorFlow 实现的异常检测算法的示例?

machine-learning - 可用的无监督分类方法