ValueError:conv2d 层的输入 0 与该层不兼容:输入形状的预期轴 -1 具有值 1,但接收到的输入具有形状

数据挖掘 Python 张量流 自动编码器 python-3.x
2022-02-27 13:45:05

我正在尝试创建一个基于自动编码器的分割模型,如下所示:https ://i.stack.imgur.com/4F3Z0.png

据我所知,我没有添加任何步骤,也没有错过任何步骤。那怎么会呢,当我尝试将数据拟合到它时,它会抛出一个错误说:ValueError: Input 0 of layer conv2d is incompatible with the layer: expected axis -1 of input shape to have value 1 but received input with shape (None, 128, 128, 3)

我的代码看起来像这样:

img_input = Input(shape=input_shape)
x = img_input

# Encoder
# Block 1
# Block 2
# Block 3

# Decoder
# Deconv 1
# Deconv 2

x = Reshape((input_shape[0],input_shape[1], classes))(x)
x = Activation("softmax")(x)
    
model = Model(img_input, x)
    
return model
//Not posting all the code, I might hear I'm dumping code and asking help

拟合值,例如:

Auto_Encoder.fit(
      np.array(x), # `x` is a python array 
      np.array(y), # `y` is a python array
      ...

以下是模型摘要:

Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 128, 128, 1)]     0         
_________________________________________________________________
conv2d (Conv2D)              (None, 128, 128, 64)      640       
_________________________________________________________________
batch_normalization (BatchNo (None, 128, 128, 64)      256       
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 128, 128, 64)      36928     
_________________________________________________________________
batch_normalization_1 (Batch (None, 128, 128, 64)      256       
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 64, 64, 64)        0         
_________________________________________________________________
dropout (Dropout)            (None, 64, 64, 64)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 64, 64, 128)       73856     
_________________________________________________________________
batch_normalization_2 (Batch (None, 64, 64, 128)       512       
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 64, 64, 128)       147584    
_________________________________________________________________
batch_normalization_3 (Batch (None, 64, 64, 128)       512       
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 64, 64, 128)       147584    
_________________________________________________________________
batch_normalization_4 (Batch (None, 64, 64, 128)       512       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 32, 32, 128)       0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 32, 32, 128)       0         
_________________________________________________________________
conv2d_5 (Conv2D)            (None, 32, 32, 256)       295168    
_________________________________________________________________
batch_normalization_5 (Batch (None, 32, 32, 256)       1024      
_________________________________________________________________
conv2d_6 (Conv2D)            (None, 32, 32, 256)       590080    
_________________________________________________________________
batch_normalization_6 (Batch (None, 32, 32, 256)       1024      
_________________________________________________________________
conv2d_7 (Conv2D)            (None, 32, 32, 256)       590080    
_________________________________________________________________
batch_normalization_7 (Batch (None, 32, 32, 256)       1024      
_________________________________________________________________
dropout_2 (Dropout)          (None, 32, 32, 256)       0         
_________________________________________________________________
up_sampling2d (UpSampling2D) (None, 64, 64, 256)       0         
_________________________________________________________________
conv2d_8 (Conv2D)            (None, 64, 64, 128)       295040    
_________________________________________________________________
batch_normalization_8 (Batch (None, 64, 64, 128)       512       
_________________________________________________________________
conv2d_9 (Conv2D)            (None, 64, 64, 128)       147584    
_________________________________________________________________
batch_normalization_9 (Batch (None, 64, 64, 128)       512       
_________________________________________________________________
conv2d_10 (Conv2D)           (None, 64, 64, 128)       147584    
_________________________________________________________________
batch_normalization_10 (Batc (None, 64, 64, 128)       512       
_________________________________________________________________
dropout_3 (Dropout)          (None, 64, 64, 128)       0         
_________________________________________________________________
up_sampling2d_1 (UpSampling2 (None, 128, 128, 128)     0         
_________________________________________________________________
conv2d_11 (Conv2D)           (None, 128, 128, 64)      73792     
_________________________________________________________________
batch_normalization_11 (Batc (None, 128, 128, 64)      256       
_________________________________________________________________
conv2d_12 (Conv2D)           (None, 128, 128, 64)      36928     
_________________________________________________________________
batch_normalization_12 (Batc (None, 128, 128, 64)      256       
_________________________________________________________________
conv2d_13 (Conv2D)           (None, 128, 128, 4)       2308      
_________________________________________________________________
dropout_4 (Dropout)          (None, 128, 128, 4)       0         
_________________________________________________________________
reshape (Reshape)            (None, 128, 128, 4)       0         
_________________________________________________________________
activation (Activation)      (None, 128, 128, 4)       0         
=================================================================
Total params: 2,592,324
Trainable params: 2,588,740
Non-trainable params: 3,584
1个回答

错误信息意味着 Conv2D 层的输入形状应该是 (128,128,1) ,这与您的模型摘要一致。但是,在实际输入中,它找到的形状是 (128,128, 3 ),因此是错误的。当您在输入形状中仅定义一个通道时,您似乎正在使用 3 通道图像。