Keras:过度拟合的Conv2D

时间:2019-10-17 12:46:33

标签: python tensorflow keras

我正在尝试构建基于卷积的模型。我训练了以下两种不同的结构。如您所见,对于单层而言,历元数没有明显变化。双层Conv2D可以提高火车数据集的准确性和损失,但是验证特性将是一个悲剧。 根据我无法增加数据集的事实,该怎么做才能改善验证特性? 我已经检查了正则化器L1和L2,但它们并未影响我的模型。  Figures SpatialDropout2D

3 个答案:

答案 0 :(得分:2)

1)您可以使用自适应学习率(指数衰减或阶跃相关性可能适合您),此外,当模型进入局部最小值时,您可以尝试极高的学习率。

2)如果您正在使用图像进行训练,则可以翻转,旋转或其他操作来增加数据集的大小,也许其他一些扩充技术可能适用于您的情况。

3)尝试更改模型,例如更深,更浅,更宽,更窄。

4)如果要进行分类模型,请确保最后不要使用 sigmoid 作为激活函数,除非您进行二进制分类。< / p>

5)。在训练之前,请务必检查数据集的情况。

  • 您的火车考试分组可能不适合您的情况。
  • 您的数据中可能会有极端的噪音。
  • 您的某些数据可能已损坏。

注意:每当我想到新主意时,我都会对其进行更新。此外,我不想重复评论和其他答案,它们对您的案件都有重要的信息。

答案 1 :(得分:1)

验证是一个悲剧,因为如果模型对训练数据过度拟合,您可以尝试进行验证,

1)批量标准化是一个不错的选择。 2)尝试减小批量大小。

答案 2 :(得分:0)

我尝试了各种已知可以在小型数据集上很好地运行的模型,但是正如我所怀疑的那样,这也是我的最终结论-这是一个失败的原因

您没有足够的数据来训练一个好的DL模型,甚至没有像SVM这样的ML模型-因为八个单独的类而使情况更加恶化;使用SVM进行二进制分类时,您的数据集将有机会,但对于8类而言,则没有机会。作为最后的选择,您可以尝试XGBoost,但我不会打赌。

您能做什么?获取更多数据。没有办法解决。我没有确切的数字,但是对于8类分类,我想您需要当前数据的50-200倍才能获得合理的结果。还请注意,在此数字较大的情况下,如果使用更大的验证集,验证性能肯定会差很多。


对于读者,OP与我分享了他的数据集;形状为:X = (1152, 1024, 1), y = (1152, 8)