Почему не найден подходящий shape для входного слоя?

Учусь писать нейросети. Пока просто взял готовый код для разделения кошек и собак, нашёл датасет с фотографиями людей(одни сделаны нейронкой, другие настоящие) и пытаюсь их отделить. Обучение нейросети проходит успешно, а вот на предсказаниях - большая запара выходит...

В частности имею такой код:

data = read_csv('./drive/MyDrive/submit.csv')
images = sorted(list(data['name']))
data = DataFrame(columns=['name', 'pred'])
for i in range(len(images)):
  print(images[i])
  image = np.array(resize_img(img_to_array(load_img('./drive/MyDrive/data256/test/'+images[i])), _), dtype = np.float32)
  print(image.shape)
  pred = model.predict(image)
  data[i] = [images[i], pred]
data.to_csv('./drive/MyDrive/submit2.csv', sep=';', encoding='utf-8')

Загрузжается csv с именами фоток, сортируется по name, создаю DataFrame(чтобы потом все ответы перевести в csv) и запускаю цикл по массиву с названиями файлов. Файл загружается, переводится в array, изменяется размер(256 на 256) и превращаю на всякий случай в np.array. В дальнейшем отправляю его в модель и выходит ошибка:

test_1000183618656797.png
(256, 256, 3)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-15-c362f7cb1851> in <module>()
      6   image = np.array(resize_img(img_to_array(load_img('./drive/MyDrive/data256/test/'+images[i])), _), dtype = np.float32)
      7   print(image.shape)
----> 8   pred = model.predict(image)
      9   data[i] = [images[i], pred]
     10 data.to_csv('./drive/MyDrive/submit2.csv', sep=';', encoding='utf-8')

1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in autograph_handler(*args, **kwargs)
   1127           except Exception as e:  # pylint:disable=broad-except
   1128             if hasattr(e, "ag_error_metadata"):
-> 1129               raise e.ag_error_metadata.to_exception(e)
   1130             else:
   1131               raise

ValueError: in user code:

    File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1621, in predict_function  *
        return step_function(self, iterator)
    File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1611, in step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1604, in run_step  **
        outputs = model.predict_step(data)
    File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1572, in predict_step
        return self(x, training=False)
    File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 67, in error_handler
        raise e.with_traceback(filtered_tb) from None
    File "/usr/local/lib/python3.7/dist-packages/keras/engine/input_spec.py", line 263, in assert_input_compatibility
        raise ValueError(f'Input {input_index} of layer "{layer_name}" is '

    ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 256, 256, 3), found shape=(32, 256, 3)

Первые две строки - имя файла и форма array. Видно, что он имеет форму 256 на 256 и 3 канала цветов. Но на входной слой по какой-то неведомой причине приходит 32 на 256 и 3 канала.

Помогите, пожалуйста, решить эту проблему. Если нужен будет код целиком и данные, то могу предоставить фото и csv файлы на google drive, код докину сюда


Ответы (1 шт):

Автор решения: DGDays

Забыл сделать np.expand_dims. Сейчас всё исправил и вопрос закрыт)

→ Ссылка