首页 > 解决方案 > 负尺寸大小由 1 减去 2 导致的 'max_pooling2d_3/MaxPool' (op: 'MaxPool') 输入形状:[?,1,148,32]

问题描述

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3),padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())  # this converts our 3D feature maps to 1D feature 
vectors
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
    #sgd = optimizers.SGD(lr=0.0001, decay=1e-6, momentum=0.9)


model.compile(loss='sparse_categorical_crossentropy',  
`optimizer=Adam(lr=0.001), # Adam optimizer with 1.0e-4 learning rate
metrics = ['accuracy']) # Metrics to be evaluated by the model

当我编译上面的代码时,我得到这个错误 Negative dimension size 由于'max_pooling2d_8/MaxPool'(op:'MaxPool')从 1 中减去 2 导致,输入形状为:[?,1,75,32]。

我尝试了相同的填充,但它仍然不起作用

标签: pythontensorflowkeras

解决方案


很确定如果你改变

model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))

model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))

(您可能也必须更改数据的形状)

它会按预期工作。


推荐阅读