После тренировки модели с ImageDataGenerator (1/255.), Нужно ли изменить масштаб изображения перед прогнозированием?
Я думал, что это необходимо, но результат эксперимента сказал НЕТ.
Я обучил модель Resnet50, у которой 37 классов на верхнем слое.
Модель была обучена с ImageDataGenerator, как это.
datagen = ImageDataGenerator(rescale=1./255)
generator=datagen.flow_from_directory(
directory=os.path.join(os.getcwd(), data_folder),
target_size=(224,224),
batch_size=256,
classes=None,
class_mode='categorical')
history = model.fit_generator(generator, steps_per_epoch=generator.n / 256, epochs=10)
Точность достигла 98% после 10 эпох в моем наборе данных поезда.
Проблема в том, что когда я пытался предсказать каждое изображение в наборе данных TRAIN, прогноз был неверным (результат равен 33 независимо от того, какое входное изображение было)
img_p = './data/pets/shiba_inu/shiba_inu_27.jpg'
img = cv2.imread(img_p, cv2.IMREAD_COLOR)
img = cv2.resize(img, (224,224))
img_arr = np.zeros((1,224,224,3))
img_arr[0, :, :, :] = img / 255.
pred = model.predict(img_arr)
yhat = np.argmax(pred, axis=1)
у вас 5, а у 33
Когда я заменяю эту строку
img_arr[0, :, :, :] = img / 255.
этим
img_arr[0, :, :, :] = img
ровно 33.
Кто-то может предложить использовать предикат_генератор () вместо предиката (), но я хочу понять, что я здесь сделал неправильно.