max_pooling2d层的输入与该层不兼容:预期ndim=4,发现ndim=5。完整形状为:[None,4,10,8,32]。

4

当我尝试定义我的模型时,出现以下错误信息:

Input 0 of layer max_pooling2d is incompatible with the layer: 
expected ndim=4, found ndim=5. 
Full shape received: [None, 4, 10, 8, 32].

我使用的代码是:
X_train = X_train.reshape(X_train.shape[0], 8, 10, 1)
X_test = X_test.reshape(len(X_test),10,8,1)
print(type(X_train),np.shape(X_train))



# CNN 
model = Sequential()
model.add(layers.Conv2D(32, (2, 2), activation='relu',
                    input_shape=(4,10, 8, 1),padding='same'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(layers.Dense(10, activation='softmax'))
2个回答

3

输入层要求数据格式为NHWC或NCHW。

N = Number of samples
H = Height of the Image
W = Width of the Image
C = Number of Channels

在大多数情况下,N是不断变化的,因此N被赋值为None。根据您的示例,您可以提供输入形状,并且要在NHWC和NCHW之间进行转换,您需要将输入参数设置为data_format ='channel_first'或data_format ='channel_last'


我的数据不是图像,而是时间序列。 - zahra zare

0

批处理大小不是必需的,因为它会自动获取,删除它可以正常运行程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接