Как я могу решить эту проблему несовместимой формы в моей сверточной нейронной сети на MNIST?

#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))