Ошибка значения: Вход 0 слоя conv2d несовместим со слоем: : ожидаемый min_ndim=4, найденный ndim=3. Получена полная форма: (Нет, 180, 180)

#python #tensorflow #conv-neural-network

Вопрос:

Вот мой код ,

Я попытался построить сеть ниже CNN , эту ошибку я наблюдаю ,

 model.add(Conv2D(8,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(16,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(254, activation='relu'))
model.add(Dense(9, activation='softmax'))
 

image_batch-это тензор формы(32, 180, 180, 3). Это пакет из 32 изображений формы 180x180x3 (последнее измерение относится к цветовым каналам RGB). Label_batch является тензором формы (32,), это соответствующие метки для 32 изображений

Ответ №1:

Вам необходимо настроить CNN для обработки входных данных shape

 model.add(layers.Conv2D(8, (3, 3), activation='relu', input_shape=(180, 180, 3)))
 

Первое измерение рассматривается как размер пакета. Если вы укажете input_shape=(180,180) , то это означает, что image_height=180, image_width=180 и batch_size=None что означает, что произвольное количество образцов может быть задано в качестве входных данных на этапе подгонки модели.