Keras Conv2D - ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3

Keras Conv2D - ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3

我知道,已经有一些这样的问题,但我找不到解决这个问题的方法。

我创建了一个这样的模型:

def CreateModel(optimizer=optimizer, loss=loss, learn_rate=learn_rate, activity_regularizer=activity_regularizer):
    model = keras.Sequential([
            keras.layers.Conv2D(32,3,input_shape=(9,21,1)),
            keras.layers.Flatten(),
            keras.layers.Dense(32, activation='relu', kernel_initializer=keras.initializers.RandomUniform(maxval=1, minval=0), bias_initializer=keras.initializers.Zeros(), activity_regularizer=activity_regularizer),
            keras.layers.Dense(2, activation='softmax', kernel_initializer=keras.initializers.RandomUniform(maxval=1, minval=0), bias_initializer=keras.initializers.Zeros(), activity_regularizer=activity_regularizer)
            ])
    model.compile(optimizer=optimizer,
              loss=loss,
              metrics=['accuracy', keras.metrics.FalseNegatives(), keras.metrics.FalsePositives(), keras.metrics.Precision(), keras.metrics.Recall()])
    return model

我的输入包含 300 张 9x21 灰度图像。

没有 Conv2D 层,它工作得很好。但是对于这个 Conv2D 层,我得到了错误:

ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3

我也尝试了一些其他的 input_shapes 比如:

keras.layers.Conv2D(32,3,input_shape=(300,9,21,1))
keras.layers.Conv2D(32,3,input_shape=(300,9,21))

但没有成功。

谢谢 刺

刺,

只需确保为模型提供 [n_items,9,21,1] 形状的数据。使用 data = tf.expand_dims(data, axis =-1)

或者先添加重塑图层:

tf.keras.layers.Reshape((9,21,1), input_shape=(9,21))