Keras验证准确性不断提高

时间:2020-03-03 14:24:42

标签: python tensorflow machine-learning keras deep-learning

已更新:将旋转范围增加到180,增加了GaussianNoise。查看代码

我正在使用CNN进行图像分类。我在训练数据集中有2张3500级灰度照片,在验证数据集中有1000张灰度照片。问题是首先5到10个时期的火车acc和有效acc不断增加,但是有效acc却开始减少,因此在火车acc不断增加的同时急剧下降。

Old Picture enter image description here

我看到这是因为过拟合,但我也尝试通过在ImageDataGenerator.中放入一些参数来处理过拟​​合

train_image_generator = ImageDataGenerator(rescale=1. / 255,
                                           rotation_range=180,
                                           width_shift_range=.15,
                                           height_shift_range=.15,
                                           horizontal_flip=True,
                                           fill_mode='nearest',
                                           shear_range=0.05,
                                           zoom_range=0.5
                                           )

我还把Dropout层放在了CNN架构中。

model = Sequential([
    GaussianNoise(0.01, input_shape=(IMG_HEIGHT, IMG_WIDTH, 1)),
    Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH, 1)),
    Dropout(0.7),
    MaxPooling2D(),

    Conv2D(32, 3, padding='same', activation='relu'),
    Dropout(0.7),
    MaxPooling2D(),
    Dropout(0.5),

    Conv2D(64, 3, padding='same', activation='relu'),
    Dropout(0.7),
    MaxPooling2D(),
    Dropout(0.5),

    Flatten(),
    Dropout(0.7),

    Dense(512, activation='relu'),
    Dense(2, activation='softmax')
])

我已经设置了学习率:

adamOpti = Adam(lr=0.00005)
model.compile(optimizer=adamOpti,
              loss="categorical_crossentropy",
              metrics=['accuracy'])

即使我也设置了EarlyStopping:

es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=200)
mc = ModelCheckpoint('best_model.h5', monitor='val_acc', mode='max', verbose=1, save_best_only=True)

TL,DR我为交易过拟合尝试的清单:

  1. 图像增强
  2. 减少层和神经元的数量
  3. 随机播放火车图像生成器
  4. 降落
  5. 早停
  6. 调音学习率
  7. 更多数据(直到那时仍在收集dunno)

我不知道还有什么我想念的。欢迎所有评论。 预先谢谢你

1 个答案:

答案 0 :(得分:0)

我建议从图像增强过程开始。向图像添加模糊,旋转,噪点,剪切等,以使模型不会一遍又一遍地看到同一组图像。尽管感觉很直观,但是您需要通过增加多样性来使模型更难。这将使它更好地概括。

还要确保您的班级不高度不平衡(最大班级的图像数量不超过最小班级图像的数量的10倍)。这是为了确保您的批次中没有一个班级人数过多。如果您在一类中拥有比其他类更多的图像,请从较大的类中删除一些图像,或者为较小的类收集更多图像(或生成以某种方式增强的新图像),直到每个图像上的图像数量更多为止课。

最后,如果您的硬件支持的话,您可以增加批量大小,从而增加每批图像的多样性。

编辑:

您似乎只有两个班级,而且他们是平衡的。我建议尝试将图像增强作为第一种方法(旋转,模糊,噪点,剪辑,偏斜)