CNN准确度冻结

时间:2018-04-18 00:33:56

标签: python python-3.x tensorflow deep-learning keras

所以我正在训练CNN网络来检测输入图像中的某些特征。结构如下:

输入图像 - > Conv2D - > Relu - >密集 - > Softmax - >结果

数据集包含3个类别中的180个黑白图像,每个类别只有60个图像。

我的问题是验证准确性和训练准确度仅在大约6-7个时期后没有变化,如下图所示:

enter image description here

我尝试使用谷歌搜索解决方案,但到目前为止没有结果。起初我认为我的模型已经过度装配,因为它不再“学习”而且训练损失不断减少,而验证损失则没有。因此,我尝试添加学习率衰减,Nesterov动量,增加批量大小以减少过度拟合,但它们没有改变太多(好吧,总体准确度确实从0.90提高到0.92但是)我的准确性正好停留在1.00,0.88每次0.87(之前是1.00,0.85和0.85)。

我想要识别的功能非常简单,我需要在控制循环中使用结果,所以我想要一个轻量级模型,如果可能的话,精度至少为95%。你们对于应该做什么或者至少是改进这个模型的研究方向有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你的模型过于贴合。训练损失接近于零(训练精度已达到100%);然而,验证损失远远高于培训损失。理想的模型会将培训和验证损失放在一起。您还没有提供任何代码;所以假设你的模型没有错,我会建议正规化技术,如丢失,重量衰减(L2)和批量标准化。

答案 1 :(得分:2)

使用数据增强技术是避免过度拟合的另一种可能的解决方案。 也就是说,应用一些简单的图像转换,例如水平翻转垂直翻转旋转翻译等。{ {3}}一些示例。

这将使您的数据更加多样化,并且在训练模型时,它将看到更多需要学习的样本。如果您仅使用相同的图像和标签来获取内容,它只会记住该内容,并且无法在验证/测试数据上取得良好的结果。