Задать вопрос
@Vadimych1
Просто я.

ValueError: Input 0 of layer «sequential» is incompatible with the layer: expected shape=(None, 244, 244, 3), found shape=(None, 244, 3), что делать?

Здравствуйте. Появилась следующая проблема:
ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 244, 244, 3), found shape=(None, 244, 3)

Возникает при использовании нейросети (при запуске следующего кода):
take_photo("photo.jpg", 0.3)
  
  image = Image.open("./photo.jpg").convert("RGB")
  size = (244, 244)
  image = ImageOps.fit(image, size)
  image_array = np.asarray(image)

  normalized_image_array = (image_array.astype(np.float32) / 127.5) - 1

  print(normalized_image_array.shape)

  res = model.predict(normalized_image_array)

  diagnose = labels[np.argmax(res)]

  print("Результат: {}".format(diagnose))

Но, при обучении всё было нормально, хотя код преобразования картинки в массив один и тот же.

Когда я вывожу шейп входных данных, всё, вроде бы, должно быть верно, ведь там он равен (244, 244, 3), но как только подаю данные на вход, получаю, что нужный шейп - (None, 244, 244, 3), найденный - (None, 244, 3). Я не понимаю, куда исчезает ещё одна размерность. Помогите, пожалуйста.
  • Вопрос задан
  • 750 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя Вадим Лебеденко К ответам на вопрос (2)
@Vadimych1 Автор вопроса
Просто я.
Всё починил. Дело в том, как я подавал входные данные. Я делал это, подавая весь массив, и Keras считал это как множество входных данных (а именно 244 массива) размером 244 на 3. Нужно добавить строчки:
m_data = np.ndarray(shape=(1, 244, 244, 3), dtype=np.float32)
  m_data[0] = normalized_image_array

И тогда всё будет нормально.
Ответ написан
Комментировать