Я использую встроенный в Keras inception_resnet_v2
для обучения CNN распознаванию изображений. При обучении модели в качестве входных данных используется массив данных с формой ввода (1000, 299, 299, 3),
model.fit(x=X, y=Y, batch_size=16, ...) # Output shape `Y` is (1000, 6), for 6 classes
Сначала, пытаясь предсказать, я передал одно изображение формы (299, 299, 3), но получил ошибку
ValueError: Ошибка при проверке ввода: ожидалось, что input_1 будет иметь 4 измерения, но получил массив с формой (299, 299, 3)
Я изменил свой ввод с помощью:
x = np.reshape(x, ((1, 299, 299, 3)))
Теперь, когда я предсказываю,
y = model.predict(x, batch_size=1, verbose=0)
Я не получаю сообщение об ошибке.
Я хочу убедиться, что правильно понимаю batch_size
как в обучении, так и в прогнозировании. Мои предположения:
1) При model.fit
Keras получает batch_size
элементов из входного массива (в данном случае он работает через мои 1000 примеров по 16 выборок за раз)
2) При model.predict
я должен изменить свой ввод в виде единого трехмерного массива, и я должен явно установить batch_size
в 1.
Это правильные предположения?
Кроме того, было бы лучше (возможно, даже) предоставить обучающие данные для модели, чтобы такого рода изменение формы до прогнозирования не было необходимым? Спасибо за помощь в изучении этого.