несовместим со слоем: ожидается, что ось -1 входной формы будет иметь значение 1, но получен ввод с формой [Нет, 256, 256, 3]

У меня есть модель, которая выглядит так:

Model: "sequential_4"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_170 (Conv2D)          (None, 256, 256, 32)      320       
_________________________________________________________________
batch_normalization_169 (Bat (None, 256, 256, 32)      128       
_________________________________________________________________
activation_166 (Activation)  (None, 256, 256, 32)      0         
_________________________________________________________________
conv2d_171 (Conv2D)          (None, 256, 256, 32)      9248      
_________________________________________________________________
batch_normalization_170 (Bat (None, 256, 256, 32)      128       
_________________________________________________________________
activation_167 (Activation)  (None, 256, 256, 32)      0         
_________________________________________________________________
max_pooling2d_35 (MaxPooling (None, 128, 128, 32)      0         


..............

Но это дает мне:

ValueError: Input 0 of layer sequential_4 is incompatible with the layer: expected axis -1 of input shape to have value 1 but received input with shape [None, 256, 256, 3]

Свойства моих изображений:

print(imm.dtype)   # float32
print(imm.ndim)    # 3
print(imm.shape)   # (256, 256, 3)

Эта ошибка возникает по адресу:

history = model.fit(
    x = train_x, y = train_y, 
    #batch_size=32, 
    #epochs=epochs, 
    #verbose=1, 
    #shuffle=True,
    #validation_split=0.2
)

След :

ValueError                                Traceback (most recent call last)
<ipython-input-36-bf5138504d79> in <module>()
      2 
      3 history = model.fit(
----> 4     x = train_x, y = train_y,
      5     #batch_size=32,
      6     #epochs=epochs,

Когда я удаляю один комментарий из подгонки модели, ошибка перемещается на одну строку вниз.


person Danial    schedule 13.09.2020    source источник


Ответы (2)


У изображения есть каналы 3, но у первого слоя есть каналы 32. Первый слой должен иметь тот же канал, что и входное изображение.

Не могли бы вы попробовать добавить новый входной слой в начале модели (я имею в виду перед слоем conv2d_170).

keras.Input(shape=(256, 256, 3))

person Uzzal Podder    schedule 13.09.2020

В этой модели отсутствует входной слой. Начните последовательность модели с входного слоя.

keras.layers.InputLayer(input_shape=(256, 256, 3))
person gihan    schedule 13.09.2020