python - 如何在没有负维度大小的情况下实现 Conv2D 和 maxpooling2d
问题描述
我正在尝试将 Conv2D 和 Maxpooling 添加到我的头部模型中,但我似乎无法这样做
headModel = baseModel.output
headModel = (Conv2D(448,(3,3),input_shape=data.shape[1:]))(headModel)
headModel = (MaxPooling2D(pool_size=(7,7)))(headModel)
headModel = Flatten(name="flatten")(headModel)
headModel = Dense(128, activation="relu")(headModel)
headModel = Dropout(0.5)(headModel)
headModel = Dense(2, activation="softmax")(headModel)
Maxpooling2D 在我添加 conv2D 之前完美运行,但是一旦我这样做,我就会收到以下错误
'{{node max_pooling2d_6/MaxPool}} = MaxPoolT=DT_FLOAT, data_format="NHWC", explicit_paddings=[], ksize=[1, 7, 7, 1], padding=" VALID", strides=[1, 7, 7, 1]' 输入形状:[?,5,5,448]。在处理上述异常的过程中,又出现了一个异常:ValueError Traceback (most recent call last)
理想情况下,我想要 2 个 Maxpooling 层和 2 个 Conv2D 层,所以我可以拥有类似于这个 CNN 架构的东西
谢谢
解决方案
您可以设置
padding='same'
哪个将向特征图添加零填充,从而保留特征图的尺寸。
当您尝试在特征图上执行卷积或最大池化时会出现异常(如问题中所述),这种情况无法进一步减少。例如,您的特征图的大小是( 2 , 2 , 32 )
您不能在其上执行内核大小为 3 的卷积(使用 padding= valid
)。
推荐阅读
- python - Airflow:使用 Taskflow API 在 PythonOperator 中运行 PostgresOperator
- javascript - 在 Node 的 Promise 中调用类的其他函数
- react-native - 无法写入清单文件。错误域 = NSCocoaErrorDomain
- oracle - oracle 中的 Pivot 没有给出预期的结果
- git - 从部署在 Openshift 中的 Redhat Decision Manager(RHDM) 中的 git 导入项目
- namespaces - 使用来自其他本体的 URI,特别是 BBC 体育本体
- javascript - 再次单击时反向使用状态。用作切换方法而不是单个执行
- web - 使用 wget 下载网页时如何保持登录到网站
- html - iOS 设备的 gmail 中无法点击电话号码
- c++ - 是否可以将大小写不同的字符串添加到 CMFCToolBarComboBoxButton?