Обучение Keras Transfer в Inception ResnetV2 - Обучение останавливается между тем, потому что val_acc не улучшается
Я пытался проверить изображения некоторых знаменитостей на Inception ResnetV2
модель для распознавания лиц с использованием KERAS
Теперь я пытался тренироваться с epochs = 50
, но обучение остановилось на Epoch 00027
так как validation_accuracy
не улучшилось
Теперь я понимаю, что это случай перебора данных. Я не уверен, какие параметры нужно настроить и какие изменения нужно внести, чтобы избежать переопределения. Я могу сделать что-то не так.
Вот некоторые важные части кода, которые были бы полезны для выявления проблемы
Модель:
model = applications.inception_resnet_v2.InceptionResNetV2(include_top=False, weights='imagenet', input_shape = (img_width, img_height, 3))
Делаем 5 верхних слоев trainable = false
:
for layer in model.layers[:5]:
layer.trainable = False
Добавление пользовательских слоев:
x = model.output
x = Flatten()(x)
x = Dense(1024, activation="relu")(x)
x = Dropout(0.5)(x)
x = Dense(1024, activation="relu")(x)
predictions = Dense(10, activation="softmax")(x)
Модель компиляции и другие гиперпарамы:
model_final.compile(loss = "categorical_crossentropy", optimizer = optimizers.SGD(lr=0.0001, momentum=0.9), metrics=["accuracy"])
Увеличение данных:
train_datagen = ImageDataGenerator(
rescale = 1./255,
horizontal_flip = True,
fill_mode = "nearest",
zoom_range = 0.3,
width_shift_range = 0.3,
height_shift_range=0.3,
rotation_range=30)
test_datagen = ImageDataGenerator(
rescale = 1./255,
horizontal_flip = True,
fill_mode = "nearest",
zoom_range = 0.3,
width_shift_range = 0.3,
height_shift_range=0.3,
rotation_range=30)
Проверка и ранняя остановка:
checkpoint = ModelCheckpoint("custom_resnet.h5", monitor='val_acc', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_acc', min_delta=0, patience=10, verbose=1, mode='auto')
Я хочу выяснить, почему точность проверки так низка.
Любая помощь будет здорово, спасибо:)