python - 负尺寸大小由 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]。
我尝试了相同的填充,但它仍然不起作用
解决方案
很确定如果你改变
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'))
(您可能也必须更改数据的形状)
它会按预期工作。
推荐阅读
- javascript - 咖喱 javascript sum 函数。
- excel - 预定脚本添加到 xlsx 中的新单元格
- python - 带有 Flask 的 Python 中的 Oauth2 从 API 获取 302
- loops - 跟踪算法
- python - 每次添加“ManyRelatedObject”时调用函数
- html - 不变的内容应该在 index.html 或顶级 app.vue 文件中
- python - Jupyter Notebook 图片标题
- php - 我试图在 php 中创建一个循环,吐出下面的内容
- networking - Kubernetes 设置中集群的 pod 中的 Tcpdump(在 Minikube 设置中)
- git - git 在合并冲突后立即说“没有文件需要合并”