Keras / Tensorflow predict: ошибка в форме массива
Я после Keras cifar10 учебник здесь. Единственными изменениями, которые я внес, были:--9-->
[a] добавлен в конец файла учебника
model.save_weights('./weights.h5', overwrite=True)
[b] изменено ~./водоснабжении/водоснабжении.json to
{"floatx": "float32", "backend": "tensorflow", "epsilon": 1e-07}
Я могу успешно выполнить модель.
затем я хочу проверить одно изображение против обученной модели. Мой код:
[... similar to tutorial file with model being created and compiled...]
...
model = Sequential()
...
model.compile()
model.load_weights('./ddx_weights.h5')
img = cv2.imread('car.jpeg', -1) # this is is a 32x32 RGB image
img = np.array(img)
y_pred = model.predict_classes(img, 1)
print(y_pred)
Я получаю эту ошибку:
ValueError: Cannot feed value of shape (1, 32, 3) for Tensor 'convolution2d_input_1:0', which has shape '(?, 3, 32, 32)'
каков правильный способ изменения входных данных для одно изображение для проверки?
Я не добавил "image_dim_ordering": "tf"
на ./keras/keras.json
.
2 ответов
вы должны изменить форму входного изображения, чтобы иметь форму [?, 3, 32, 32]
здесь ?
- это размер пакета. В вашем случае, поскольку у вас есть 1 Изображение размер пакета равен 1, так что вы можете сделать:
img = np.array(img)
img = img.reshape((1, 3, 32, 32))
Я работаю над данными cifar10 сейчас, я обнаружил, что простая переформовка не будет работать, следует использовать numpy.перенесите вместо этого.