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

Keras model.summary()显示Conv2D层输出形状不正确问题

问题结论

model.summary()输出的形状信息不存在错误,是卷积、池化层默认参数配置下的正常计算结果。

原理说明
  • Keras中Conv2D层的默认参数:padding='valid'(即不对输入边缘做零填充)、strides=(1,1)(卷积步长为1),对于尺寸为k×k的卷积核,输出特征图宽高的计算公式为:
    输出宽/高 = 输入宽/高 - k + 1
    
    你用的是3×3卷积核,代入公式可得每次卷积后宽高减少3-1=2,和你看到的输出变化完全一致:比如第一层输入尺寸150×150,卷积后得到150-3+1=148,和summary里的(None,148,148,32)完全匹配。
  • Keras中MaxPooling2D层的默认参数:padding='valid'、strides默认等于池化核尺寸,你用的是2×2池化核,因此输出宽高为输入宽高除以2后向下取整:
    • 148×148池化后得到74×74
    • 72×72池化后得到36×36
    • 34×34池化后得到17×17
    • 15×15池化后向下取整得到7×7
    • 5×5池化后向下取整得到2×2
      所有数值都和summary输出完全吻合,不存在计算错误。
补充提示

如果你希望卷积操作后特征图宽高和输入保持一致,只需要在Conv2D层初始化时显式指定padding='same'即可,该模式下框架会自动在输入边缘补零,保证步长为1时输出宽高和输入完全相等。
另外你贴出的代码里model.compile()语句缺少闭合的右括号,实际运行时需要补全,否则会触发语法错误。

内容的提问来源于stack exchange,提问作者GBI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:24:45