【问题标题】:Keras CNN training accuracy is good but test accuracy is very lowKeras CNN 训练准确率很好但测试准确率很低
【发布时间】:2017-03-01 10:01:34
【问题描述】:

请对这些 CNN 结果发表评论。 我使用了 2000 张训练图像和 400 张测试图像。 训练准确率是完美的,但测试准确率很低。 我认为这是因为训练图像和测试图像之间存在很大差异。 有人对这个案例有好的想法吗?

[]

【问题讨论】:

  • 可能更适合 stats.stackexchange

标签: python deep-learning keras


【解决方案1】:

这显然是过度拟合的情况。你有多少可学习的参数?例如,VGGnet 有 138M 参数,在这种情况下,不难看出网络中的某些神经元一定已经按原样记住了训练图像,因此您的网络不能很好地泛化。

要解决这个问题,首先你可以尝试一个更简单的模型,如果任务很简单,比如区分形状。您还可以通过交换颜色通道(如果它不影响输出类)、翻转或旋转图像等转换来增加训练数据,以使您的网络更好地泛化。在损失函数中加入 L1/L2 正则化并尝试 dropouts。

【讨论】:

  • 完全同意过拟合,不同意“更简单的模型”。您需要正则化技术,例如您建议的转换和 L1/L2。其他技术是辍学和提前停止(编辑:我看到你添加了辍学,对我来说它产生了最好的结果)
  • 我做了一些研究,是的,你是对的,较浅的模型比可以利用数据层次结构的更深的网络更容易“记忆”。仅我相信,较小网络的好处是可以缩短训练时间。感谢您指出。我正在适当地编辑答案
猜你喜欢
  • 2018-09-18
  • 2020-04-07
  • 2020-10-17
  • 1970-01-01
  • 2019-05-12
  • 2018-07-13
  • 2017-10-05
  • 2023-03-17
  • 2020-02-11
相关资源
最近更新 更多