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

卷积与转置卷积用相同参数无法还原输入尺寸的原因及解法

认知偏差原因

你对转置卷积与普通卷积的参数对应关系存在两处核心误解:

  • 普通Conv2d的输出尺寸计算公式包含向下取整(floor)操作,属于多对一映射:相同的输出尺寸可能对应多个不同的输入尺寸,仅靠卷积核大小、步长、填充三个参数无法唯一确定逆运算的输出尺寸
  • 转置Conv2d比普通Conv2d多了output_padding(输出填充)参数,该参数的作用就是填补普通卷积取整操作带来的尺寸差,默认值为0,因此你直接使用和普通卷积完全一致的三个参数,自然会出现尺寸偏差

可以用PyTorch官方的尺寸计算公式验证你的场景:

普通Conv2d输出尺寸公式:
$H_{out} = \lfloor \frac{H_{in} + 2padding - dilation(kernel_size-1) -1}{stride} +1 \rfloor$
转置Conv2d输出尺寸公式:
$H_{out} = (H_{in} -1)stride + output_padding - 2padding + kernel_size$

你的普通Conv2d输入高为24,代入得输出高为12;转置Conv2d默认output_padding=0时,代入得输出高为23,和你实际得到的结果完全吻合。

修复方案

有两种常用的修复方式,优先推荐第一种:

  • 给转置卷积添加output_padding=1参数
    直接将你的转置卷积定义修改为ConvTranspose2d(256, 128, 3, padding=1, stride=2, output_padding=1),代入公式计算可得输出高为24,完全匹配原始输入尺寸
  • 对转置卷积的输出做适配处理
    若不想修改转置卷积参数,可以在转置卷积输出后,对特征图边缘做1像素的零填充,或者在编码器卷积层提前做适配性的填充,不过该方式会引入额外计算或特征损失,不推荐使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:15:04