Ошибка при проверке ввода: ожидалось, что conv2d_17_input будет иметь 4 измерения, но получил массив с формой (28, 28, 1) - PullRequest
0 голосов
/ 22 февраля 2020

Я подготовил модель для распознавания рукописного ди git от MNIST. Форма ввода 1-го Conv2D: (28, 28, 1). После обучения я хотел предсказать загруженный образ ди git. Форма изображения была (1024, 791, 3), после применения следующего кода я изменил размер изображения до (28,28,1) и назвал model.predict ():

resized_image = cv2.resize(image, (28, 28))
#resized_image = tf.image.resize(image, size = (28,28))
resized_image = resized_image / 225.0
resized_image = resized_image[:,:,:1] 
prediction = model.predict(resized_image)
#prediction = model.predict(resized_image, batch_size = 1, verbose = 1, steps = 1)
print(labels[np.argmax(prediction)])

Но я получаю следующую ошибку:

Ошибка при проверке ввода: ожидалось, что conv2d_17_input имеет 4 измерения, но получен массив с формой (28, 28, 1)

модель:

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(filters = 32, kernel_size = (3,3), padding = 'Same', activation = 'relu', input_shape = (28,28,1)),
    tf.keras.layers.MaxPool2D(pool_size = (2,2)),
    tf.keras.layers.Conv2D(filters = 64, kernel_size = (3,3), padding = 'Same', activation = 'relu'),
    tf.keras.layers.MaxPool2D(pool_size = (2,2)),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation = 'relu'),
    tf.keras.layers.Dense(10, activation = "softmax")
])

Я также пытался раскомментировать

resized_image = tf.image.resize(image, size = (28,28))
prediction = model.predict(resized_image, batch_size = 1, verbose = 1, steps = 1)

И все же я получил ту же ошибку.

1 Ответ

0 голосов
/ 22 февраля 2020

Вы не показывали свою модель, но обычно вам нужно рассмотреть партию. Таким образом, ваш ввод должен быть [batch_size, width, height, channel]. Если у вас есть только одно изображение, вы должны установить batch_size=1, в вашем случае [1, 28, 28, 1].

Кроме того, убедитесь, что ваш ввод tf.tensor.

Надеюсь, это поможет вам .

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