Я только что впервые использовал функцию ModelCheckpoint
для сохранения лучшей модели (best_model = True
) и хотел проверить ее производительность. Когда модель была сохранена, было сказано, что val_acc
было на уровне 83,3% перед сохранением. Я загрузил модель и использовал Assessment_generator для validation_generator, но результат для val_acc
был 0,639. Я запутался, использовал его снова и получил 0,654, а затем 0,647, 0,744 и так далее. Я протестировал ту же конфигурацию на своем ПК (без графических процессоров), и она постоянно показывает одинаковые результаты (иногда могут быть небольшие ошибки округления).
- Почему результаты между разными запусками Assessment_generator различаются только на графическом процессоре?
- Почему модель val_acc отличается от указанной?
Я использую реализацию Keras Tensorflows.
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.SGD(lr=1e-4, momentum=0.9),
metrics=['accuracy'])
checkpointer = ModelCheckpoint(filepath='/tmp/weights.hdf5', monitor = "val_acc", verbose=1, save_best_only=True)
# prepare data augmentation configuration
train_datagen = ImageDataGenerator(
rescale = 1./ 255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size = (img_height, img_width),
batch_size = batch_size)
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size = (img_height, img_width),
batch_size = batch_size)
# fine-tune the model
model.fit_generator(
train_generator,
steps_per_epoch = math.ceil(train_samples/batch_size),
epochs=100,
workers = 120,
validation_data=validation_generator,
validation_steps=math.ceil(val_samples/batch_size),
callbacks=[checkpointer])
model.load_weights(filepath='/tmp/weights.hdf5')
model.predict_generator(validation_generator, steps = math.ceil(val_samples/batch_size) )
temp_model = load_model('/tmp/weights.hdf5')
temp_model.evaluate_generator(validation_generator, steps = math.ceil(val_samples/batch_size), workers = 120)
>>> [2.1996076788221086, 0.17857142857142858]
temp_model.evaluate_generator(validation_generator, steps = math.ceil(val_samples/batch_size), workers = 120)
>>> [2.2661823204585483, 0.25]
val_samples
общему количеству файлов изображений в разделеvalidation_data_dir
? - person Yu-Yang   schedule 01.09.2017validation_generator.reset()
после каждого вызова функцииfit_generator()/predict_generator()/evaluate_generator()
? - person Yu-Yang   schedule 01.09.2017