Увеличение данных, дающее мне худшие результаты - PullRequest
0 голосов
/ 03 марта 2020

Я использовал Keras ImageDataGenerator и передал мои обучающие образы, которые мне показались (набор данных MNIST).

datagen=keras.preprocessing.image.ImageDataGenerator(
featurewise_center=True,
samplewise_center=True,
featurewise_std_normalization=True,                                     
samplewise_std_normalization=True,rotation_range=10,                                                    
width_shift_range=0.1,height_shift_range=0.1,zoom_range=0.1,
shear_range=0.01,validation_split=0.1
)

datagen.fit(X_train)
train_gen=datagen.flow(X_train,y_train.toarray(),batch_size=32,subset='training')
validation_gen=datagen.flow(X_val,y_val.toarray(),batch_size=32,subset='validation')

lrate=keras.callbacks.LearningRateScheduler(step_decay)

model_history=model.fit_generator(train_gen,epochs=50,verbose=2,validation_data=validation_gen,callbacks=[lrate])

enter image description here

Во время обучения я получаю ожидаемые результаты и получаю подтверждение оценка выше 99%. Вот график после тренировки:

Но когда я использовал model.evaluate, чтобы получить оценки для набора данных проверки, я получил очень низкий балл

scores = model.evaluate(X_val,y_val.toarray(), verbose = 10 )
print (scores)

Я получил результат как:

[2.454622192836943, 0.080714285]

  • Почему это происходит?
  • Как передать изображения через датаген во время теста?

1 Ответ

0 голосов
/ 03 марта 2020

В процессе обучения вы получали изображения от train_gen, поэтому при проверке вы должны получать их от validation_gen, а не от X_val и y_val, как у вас.

Любая предварительная обработка сделано для обучения, как правило, также должно быть сделано перед выводом. Используйте model.evaluate_generator(validation_gen) согласно этой документации.

...