#python #tensorflow #mnist
#python #тензорный поток #mnist
Вопрос:
Я построил модель классификации изображений на MNIST (CNN), и модель очень хорошо работает на тестовом наборе. Однако у меня возникает ошибка измерения, когда я загружаю изображение из Google, изменяю его размер, нормализую и загружаю в свою модель. Форма входного тензора для моей модели (None,28,28)
, но она говорит, что мой ввод — это (None,28)
когда я даю модели изображение размером 28×28 пикселей. Как я могу решить эту проблему? model_code.jpg
Это ошибка, с которой я столкнулся:
WARNING:tensorflow:Model was constructed with shape (None, 28, 28) for input Tensor("flatten_input_2:0", shape=(None, 28, 28), dtype=float32), but it was called on an input with incompatible shape (None, 28).
ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 of input shape to have value 784 but received input with shape [None, 28]
Большое спасибо.
Комментарии:
1.
None
Вероятно,(None,28,28)
это для пакетов. Добавьте дополнительное измерение к своему изображению перед передачей его в сеть или используйте пакеты для прогнозирования сразу
Ответ №1:
вам нужно будет изменить форму изображения, используя numpy, это можно легко сделать с помощью этого
import numpy as np
image = np.array(image).reshape(1,28,28)
Ошибка, вероятно, связана с тем, что tensorflow ожидает много изображений, поэтому, если вы предоставили 100 изображений, форма массива будет (100,28,28), но поскольку у вас есть одно изображение, оно находится в (28,28), как и должно быть обычно. изменение его в правильный формат решит проблему
Ответ №2:
Я думаю, вы упускаете batch size
измерение, вы просто вводите изображение (28, 28), и первые 28 распознаются как batch
, вам нужно изменить ввод на (1,28,28).
tf.reshape(image, (1,28,28))