загрузка изображения в предварительно обученную модель keras - PullRequest
0 голосов
/ 09 июля 2020

Я обучил эту модель (копирование и вставку прямо с веб-сайта) и сохранил с model.save(). Теперь я хочу использовать его для классификации изображений, которые я генерирую, поэтому я сохраняю их и меняю их форму до 28x28 пикселей, а затем пытаюсь передать их модели следующим образом:

from matplotlib import image
img = image.imread('img.png')[:,:,:1] #so that the shape ends up being (28,28,1)
print(self.model.predict(img))

Но когда я запускаю это, я получаю куча ошибок:

ПРЕДУПРЕЖДЕНИЕ: tensorflow: Модель была построена с shape (None, 28, 28, 1) для входного Tensor ("input_1: 0", shape = (None, 28, 28 , 1), dtype = float32), но он был вызван на входе с несовместимой формой (None, 28, 1, 1). ...

ValueError: Input 0 of layer dense_12 is incompatible with the layer: expected axis -1 of input shape to have value 784 but received input with shape [None, 28]`

Я немного покопался, и кажется, что есть проблема с формой ввода, согласно этой строке: WARNING:tensorflow:Model was constructed with shape (None, 28, 28, 1) for input Tensor("input_1:0", shape=(None, 28, 28, 1), dtype=float32), but it was called on an input with incompatible shape (None, 28, 1, 1)

Как преобразовать изображение в правильную форму?

1 Ответ

0 голосов
/ 09 июля 2020

Итак, мне удалось это исправить, досадно легко, но я оставлю это здесь на случай, если у кого-то еще возникнет проблема:

from keras.preprocessing.image import load_img, img_to_array

img = load_img('img.png')
img = img_to_array(img)[:,:,:1]
img = np.expand_dims(img ,axis=0)

это изменило форму моего изображения на (1, 28, 28, 1), что и было нужно кормить на модель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...