【问题标题】:How to improve validation accuracy in training convolutional neural network?如何提高训练卷积神经网络的验证准确率?
【发布时间】:2019-10-27 23:30:50
【问题描述】:

我正在训练一个 CNN 模型(使用 Keras 制作)。输入图像数据有大约 10200 张图像。有120个类别需要分类。绘制数据频率,我可以看到每个类的样本数据在分布方面或多或少是均匀的。

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

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

我使用 0.005 的学习率和 0.25 的 dropout。

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

【问题讨论】:

    标签: keras conv-neural-network


    【解决方案1】:

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

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

    最后,每个类大约有 85 张图像,这确实不是很多,比较 CIFAR-10 和其他图像。 CIFAR-100,每类 6000/600 张图像或 ImageNet,20k 类和 1400 万张图像(每类约 500 张图像)。因此,数据增强也可能是有益的。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2019-08-07
      • 2022-11-07
      • 2016-08-02
      • 2017-11-17
      • 2017-11-12
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多