Мой проверочный набор данных является точной копией моего набора тренировочных данных.Однако во время обучения, в конце каждой эпохи, моя точность обучения составляет 99,5 или около того (в среднем по всем партиям), и моя проверка составляет около 96,7.Если я меняю оптимизатор, я замечаю, что разрыв может быть еще больше.
Мой набор полных данных - только 4000 изображений.Во время обучения мои batch size is 50
и steps_per_epoch is 100
, поэтому модель должна видеть около 5000 images
.
Почему существует такое огромное расхождение между тренировкой и точностью проверки, если они имеют один и тот же набор данных?
Вот как я подгоняю свою модель:
r_optimizer = optimizers.Adagrad(lr=0.001, epsilon=None, decay=0.0)
r_batch_size = 50
r_epochs = 5
r_steps_per_epoch = 80
MODEL.optimizer = r_optimizer
MODEL.compile(optimizer= r_optimizer,
loss='categorical_crossentropy',
metrics = ['accuracy'])
history = MODEL.fit_generator(
train_gen,
steps_per_epoch = r_steps_per_epoch,
epochs = r_epochs,
validation_data=valid_gen,
validation_steps= np.ceil(len(valid_gen.filenames)/r_batch_size),
callbacks = callbacks,
shuffle= True,
verbose =2 )
Я использую xception с помощью обучения передачи и добавил следующие слои:
132 : global_average_pooling2d_1
133 : dense_1
134 : dropout_1
135 : dense_2
136 : dense_3
dropout был установлен на 0путем копирования весов и создания новой модели (ранее это было только .20