Почему моя модель переоснащается после выполнения регуляризации и пакетной нормализации - PullRequest
0 голосов
/ 29 октября 2019

Это моя модель модели CNN.

def make_dcnn_model():
  model = models.Sequential()
  model.add(layers.Conv2D(5, (5, 5), input_shape=(9, 128,1), padding='same', strides = (1,2), activity_regularizer=tf.keras.regularizers.l1(0.001)))
  model.add(layers.LeakyReLU())
  model.add(BatchNormalization())

  model.add(layers.AveragePooling2D((4, 4), strides = (2,4)))

  model.add(layers.Conv2D(10, (5, 5),  padding='same', activity_regularizer=tf.keras.regularizers.l1(0.001)))
  model.add(layers.LeakyReLU())
  model.add(BatchNormalization())

  model.add(layers.AveragePooling2D((2, 2), strides = (1,2)))

  model.add(layers.Flatten())
  model.add(layers.Dense(50, activity_regularizer=tf.keras.regularizers.l1(0.001)))
  model.add(layers.LeakyReLU())
  model.add(BatchNormalization())

  model.add(layers.Dense(6, activation='softmax'))
  return model

Результат показывает, что эта модель хорошо вписывается в обучающие данные, а для данных валидации произошли большие колебания точности валидации.

Обучение по 7352 выборкам, проверка по 2947 выборкам. Эпоха 1/3000 7352/7352 [====================================]- 3s 397us / выборка - потеря: 0,1016 - точность: 0,9698 - val_loss: 4.0896 - val_accuracy: 0.5816 Epoch 2/3000 7352/7352 [==============================] - 2s 214us / sample - потеря: 0.0965 - точность: 0.9727 - val_loss: 1.2296 - val_accuracy: 0.7384 Epoch 3/3000 7352/7352 [==============================] - 1s 198us / sample - потеря: 0.0930 - точность: 0.9727 - val_loss: 0.9901 - val_accuracy: 0.7855 Epoch 4/3000 7352/7352 [==============================] - 2s 211us / выборка - потеря: 0.1013 - точность: 0.9701 - val_loss: 0.5319 - val_accuracy:0.9114 Epoch 5/3000 7352/7352 [====================================] - 1с 201us / образец - потеря: 0.0958 -точность: 0,9721 - val_loss: 0.6938 - val_точность: 0,8388 Epoch 6/3000 7352/7352 [====================================] - 2s 205us / sample - потеря:0.0925 - точность: 0.9743 - val_loss: 1.4033 - val_accuracy: 0.7472 Epoch 7/3000 7352/7352 [======================================] - 1 с 203 мкс / выборка - потеря: 0,0948 - точность: 0,9740 - val_loss: 0,8375 - val_accuracy: 0,7998

1 Ответ

2 голосов
/ 29 октября 2019

Сокращение переоснащения - вопрос проб и ошибок. Есть много способов справиться с этим.

Попробуйте добавить больше данных в модель или, возможно, расширить свои данные, если вы имеете дело с изображениями. (очень полезно)

Попробуйте уменьшить сложность модели, изменив параметры слоев.

Попробуйте остановить тренировку раньше.

Регуляризация и пакетная нормализация очень полезныно может случиться так, что ваша модель уже работает намного хуже без переоснащения. Попробуйте разные виды регуляризации. (может быть, Dropout)

Я предполагаю, что, добавив больше разнообразия в данные, ваша модель будет меньше соответствовать.

...