繁体   English   中英

层 conv1d_39 的输入 0 与层不兼容::预期 min_ndim=3,发现 ndim=2。 收到的完整形状:(无,64)

[英]Input 0 of layer conv1d_39 is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: (None, 64)

我想通过添加 CNN 后跟全连接后跟 CNN 来应用 CNN 模型,但我得到一个错误?

#defining model
model=Sequential()

#part 3 CNN followed by fully connected followed by CNN  

#adding convolution layer
model.add(Conv1D(32,3, activation='relu', padding='same', 
                 input_shape = (X_train.shape[1],1)))


#adding fully connected layer
model.add(Flatten())
model.add(Dense(256,activation='relu'))
model.add(Dense(128,activation='relu'))
model.add(Dense(32,activation='relu'))


#adding convolution layer
model.add(Conv1D(64,3, activation='relu', padding='same'))

#adding pooling layer
model.add(MaxPool1D(pool_size=(2,), strides=2, padding='same'))



#adding output layer
model.add(Dense(2,activation='softmax'))

#compiling the model
model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

model.summary()

错误:ValueError:层 conv1d_39 的输入 0 与层不兼容::预期 min_ndim=3,发现 ndim=2。 收到的完整形状:(无,64)

卷积 1D 层需要 3D 输入。 model.add(Dense(32,activation='relu'))层的输出是 2D,作为输入传递给model.add(Conv1D(64,3, activation='relu', padding='same')) . 您可以使用 Reshape 图层来避免错误。

model.add(Conv1D(32,3, activation='relu', padding='same', 
                 input_shape = (X_train.shape[1],1)))
model.add(Flatten())
model.add(Dense(256,activation='relu'))
model.add(Dense(128,activation='relu'))
model.add(Dense(32,activation='relu'))

#adding Reshape layer
model.add(Reshape((1,32)))

model.add(Conv1D(64,3, activation='relu', padding='same'))
model.add(MaxPool1D(pool_size=(2,), strides=2, padding='same'))
model.add(Dense(2,activation='softmax'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM