如何提高卷积神经网络训练的验证精度?

时间:2019-10-27 15:01:07

标签: keras conv-neural-network

我正在训练CNN模型(使用Keras制造)。输入图像数据约有10200张图像。有120个类别要分类。绘制数据频率,我可以看到每个类别的样本数据在分布方面大致相同。

我面临的问题是训练数据的损失图随着时间的推移而下降,但对于验证数据而言,它首先下降,然后继续上升。精度图反映了这一点。训练数据的准确性最终稳定在0.94,但验证数据的准确性约为0.08。

基本上是过度拟合的情况。

我使用的学习率为0.005,辍学率为.25。

我可以采取哪些措施来提高验证的准确性?每个类的样本量是否可能太小,我可能需要数据扩充才能拥有更多数据点?

1 个答案:

答案 0 :(得分:0)

很难说是什么原因。首先,您可以尝试经典的正则化技术,例如减小模型的大小,向层中添加dropout或l2 / l1-regularizer。但这更像是随机猜测模型的超参数并希望达到最佳。

科学的方法是查看模型的输出,并尝试了解为什么会产生这些输出并显然检查您的管道。您是否看过输出(它们都是一样的)?您是否以与培训数据相同的方式预处理验证数据?您是否进行了分层训练/测试拆分,即在两组中保持班级分配相同?当您将数据输入模型时,数据会随机播放吗?

最后,每个班级大约有85张图像,这确实不是很多,比较一下CIFAR-10。 CIFAR-100每班6000/600张图像,或ImageNet 20k班和14M图像(每班约500张图像)。因此,数据扩充也可能是有益的。