微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Keras Conv2D-ValueError:层顺序的输入0与该层不兼容::预期的min_ndim = 4,找到的ndim = 3

如何解决Keras Conv2D-ValueError:层顺序的输入0与该层不兼容::预期的min_ndim = 4,找到的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',activity_regularizer=activity_regularizer)
            ])
    model.compile(optimizer=optimizer,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

我也尝试了其他输入法,例如:

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

但没有成功。

谢谢 皮刺

解决方法

P子

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

或者先添加“重塑”图层:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。