【发布时间】:2018-02-23 22:39:26
【问题描述】:
我在 Python 上使用 Keras 创建了一个用于图像分类的 CNN。我有一个相当小的数据集(大约 3000 张图片),主要目标是一个简单的二进制分类。
问题是在训练期间“acc”会增长,而“val_acc”从一开始就完全没有变化并且保持在 +- 0.6。
我搜索了互联网,几乎到处有人说主要问题是我的数据集太小,即网络过度拟合。 但我试图让它尽可能简单(现在是 2 个 Conv 层,Flatten 和 1 个隐藏 FC 层),我添加了批量标准化,但没有任何帮助!
也许有些东西我不明白,这就是为什么它不起作用?我这样做的时间越长,我对“acc”和“val_acc”之间有什么区别就越感到困惑?如果有任何帮助,我将不胜感激!
附:我尝试使用Keras blog tutorial 中关于“猫与狗”分类的代码,但这无济于事,问题仍然存在:(
【问题讨论】:
-
欢迎来到 Stackoverflow!请发minimal, Complete, and Verifiable example,以便我们为您提供帮助。
-
比 acc 更重要的是
loss(它必须减少)。loss和val_loss之间的区别在于,一个是用你的训练数据衡量的,另一个是用你的验证数据衡量的。 ---- 训练数据是你的模型用来学习的唯一数据,而验证/测试数据是你最后提供给模型的东西,只是为了看看它是否足以了解它以前从未见过的图像. --- 如果训练损失下降,但验证损失没有下降,则很可能是过度拟合问题:您的模型太好了。 -
还有其他可能,比如:你的验证数据不正确。
标签: python image-processing deep-learning keras classification