如果模型在训练集上表现正常,但在验证集上表现异常,这意味着什么

问题描述 投票:0回答:2

我对图像分类 ML 很陌生,并且一直在尝试使用不同层的 CNN。

背景

我试图对堆叠在一起的 25x25 像素图像进行分类,因为 50x25 像素是相同 (1) 或不同 (0)。我正在使用 keras 来创建 CNN 层。 Keras 顺序层如下所示:

layers.Input((2*imsize,imsize,3)),            # shape of input with 3 channels
layers.Reshape((2,imsize,imsize,3)),          # Turn the input into two 25x25 images
layers.LayerNormalization(axis=[-1,-2,-3]),   # Normalize images
layers.Flatten(),                             # Flatten array
layers.Dense(16,activation='relu'),           # 16 outputs hidden layer
layers.Dense(2,activation='softmax')    

然后我使用 adam optimiser 编译各层,损失和准确度如下:

ml.compile(optimizer='adam',
       loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
       metrics=['accuracy'])

之后,我使用

epoch=20
batch_size=100
训练了模型。我根据纪元绘制后得到了这些结果。

结果

enter image description here enter image description here

当前评价:

我目前的观察是

  1. 模型过度拟合,因为它仅在训练集上正常运行?
  2. 随着验证集上的损失增加而不是减少,模型正在学习错误的东西

我的问题是:我对模型的评估是否正确?我应该如何理解这个结果才能改进它?

python machine-learning keras deep-learning evaluation
2个回答
0
投票

这可能是过度拟合,这可能意味着您没有足够的数据,模型对于任务来说过于复杂(这次可能不是这种情况),或者很多其他事情。 顺便说一句,您提供的模型不是 CNN 模型,如果您使用它,您会看到更好的结果。


0
投票

模型似乎在训练数据集上过度拟合。要解决此问题,您可以执行以下操作:

  • 在训练数据中添加更多多样性。所有训练图像可能太相似,因此模型在不同图像上失败。混合起来。做到这一点的一种方法是数据增强

  • 尝试简化模型。简化模型也有助于减少过度拟合。

另请查看这篇文章,了解有关如何防止过度拟合的更多提示

© www.soinside.com 2019 - 2024. All rights reserved.