You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras搭建验证码OCR模型两次MaxPool2D后宽高较预期少1报错

问题原因

你的错误根源是第二个Conv2D层未设置padding='same'参数,导致特征图在卷积阶段发生非预期的尺寸缩小:

  • 输入图片初始尺寸:(120, 40, 1)
  • 第一层Conv2D设置了padding='same',卷积后尺寸不变,经过第一个MaxPool2D(2,2)下采样后,特征图尺寸变为(60, 20, 32)
  • 第二层Conv2D默认使用padding='valid'参数,3×3卷积核会在宽、高方向各削减2个像素,卷积后特征图尺寸变为(58, 18, 64),再经过第二个MaxPool2D(2,2)下采样后,最终尺寸就是报错里的(29, 9, 64),和你预期的4倍下采样结果(30, 10, 64)不符,Reshape时总元素数不匹配触发报错。

修复方案

给第二个Conv2D层添加padding='same'参数即可,修改后的代码段如下:

# second conv block
x = layers.Conv2D(
    64,
    (3, 3),
    activation='relu',
    kernel_initializer='he_normal',
    padding='same',
    name='Conv2'
)(x)
x = layers.MaxPool2D((2, 2), name='Pool2')(x)

修改后两次卷积都不会改变特征图尺寸,经过两次2倍下采样后宽高正好是初始的1/4,符合你预设的Reshape维度要求。

内容的提问来源于stack exchange,提问作者Matheus Leão

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:24:02