"第二层卷积层(conv2d_6)的输入维度不兼容: 预期为4维, 实际为3维。收到完整的形状为: [28, 28, 1]"

2024-04-18 17:55:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的卷积神经网络

input_shape = (28,28.1)
class cnn_model(tf.keras.Model):
    def __init__(self):

        super(cnn_model,self).__init__()
        self.conv1 = layers.Conv2D(32,(3,3),activation='relu',input_shape= input_shape)
        self.maxpool = layers.MaxPool2D((2,2))
        self.conv2 = layers.Conv2D(64,(3,3),activation ='relu')
        self.conv3 = layers.Conv2D(64,(3,3),activation='relu')
        self.flatten = layers.Flatten()
        self.dense64 = layers.Dense(64,activation='relu')
        self.dense10 = layers.Dense(10,activation='relu')
    def call(self,inputs):
        x = self.conv1(inputs)
        x = self.maxpool(x)
        x = self.conv2(x)
        x = self.maxpool(x)
        x = self.conv3(x)
        x = self.flatten(x)
        x = self.dense64(x)
        x = self.dense10(x)
        return x

我得到以下错误

model = cnn_model() print(model.call(train_data[0])) ValueError: Input 0 of layer conv2d_6 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [28, 28, 1]

形状是(28, 28, 1)。在

怎么了?在


Tags: selfinputmodelinitlayersdefactivationcnn
1条回答
网友
1楼 · 发布于 2024-04-18 17:55:19

您的input_shape参数看起来不错,所以我猜train_data[0]没有足够的维度!可能train_data.shape类似于{},它已经准备好进入模型。但是,train_data[0].shape会像(H, W, C)一样出现,它的维数比预期的少了一个。如果你想给模型提供一个样本,你必须将train_data[0]重塑为(1, H, W, C),也许可以使用NumPy的expand_dims。在

相关问题 更多 >