Цикл Keras выдает неожиданные результаты прогнозирования

#keras #generator #prediction

#keras #генератор #прогнозирование

Вопрос:

Я пытаюсь создать увеличение времени тестирования в Keras. Я тестирую свой код, не выполняя никакого увеличения изображения. Он перебирает мой фрейм данных 5 раз со всеми строками, вычисляемыми в каждом цикле. Точность первого цикла великолепна! Точность циклов 2-5 в 10 раз хуже, чем предсказания, сделанные в цикле 1. flow_from_dataframe Имеет shuffle=False .

Я также протестировал код с соответствующим увеличением изображения в ImageDataGenerator функции. Я получаю аналогичные результаты с хорошей точностью в первом цикле и в 10 РАЗ худшей точностью в циклах 2-5. У вас есть какие-либо предложения о причинах изменения производительности? Меняется ли порядок?

 TTA_data_datagen = ImageDataGenerator(rescale=1./255,
                        fill_mode='nearest')

TTA_generator = TTA_data_datagen.flow_from_dataframe(dataframe=train_df2,
                    target_size=(96,96),
                    x_col='img_path', 
                    y_col='label', 
                    class_mode="binary",  
                    batch_size=20,
                    shuffle=False)
predictions = []
predict_steps_per_epoch= len(train_df2.label) /20
for i in range(5):
   preds = final_model.predict_generator(TTA_generator, steps=predict_steps_per_epoch)
   predictions.append(preds)
  

Комментарии:

1. могу ли я узнать, почему model.predict_generator находится внутри цикла for? , даже при случайном перемещении он должен каждый раз выдавать одинаковую точность, потому что веса в модели и наборе тестов не меняются.

2. Я хотел бы выполнить некоторое увеличение изображения и выполнить несколько предсказаний для одного и того же изображения. Конечным прогнозом будет среднее значение прогноза дополненного изображения. В настоящее время я не выполняю никакого увеличения изображения, за исключением необходимого изменения масштаба. Я думаю, что я должен получать одно и то же предсказание в каждом предсказании цикла for. Однако это не так. Первая итерация цикла дает хорошие результаты, но остальные итерации выполняются плохо. Похоже, что мои данные перемешиваются, но shuffle = False.