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

PyTorch中ConvTranspose2d的输出维度计算公式是什么?

PyTorch ConvTranspose2d 输出维度计算公式详解

我完全理解你遇到的困惑——ConvTranspose2d的尺寸计算确实和普通Conv2d逻辑相反,刚开始很容易摸不清规律。其实官方文档里明确给出了计算公式,只是需要结合实际例子拆解才能明白,我帮你理清楚:

核心计算公式(无output_padding时)

对于输入宽度为w(高度同理,假设输入是正方形)的特征图,经过nn.ConvTranspose2d后的输出宽度为:

output_w = (w - 1) * stride - 2 * padding + kernel_size

参数解释

  • w:输入特征图的宽度/高度(你的例子中是5)
  • stride:转置卷积的步长
  • padding:注意!这里的padding不是在输入侧填充,而是在转置卷积生成的初始输出结果上裁剪边缘,所以增大padding会直接减小最终输出尺寸(这就是你发现添加padding反而缩小尺寸的原因)
  • kernel_size:转置卷积核的大小

用你的例子逐一验证

我们用你给出的测试案例代入公式,看看是否完全匹配:

  1. 输出11×11的情况
    输入w=5,kernel_size=3,stride=2,padding=0

    output_w = (5-1)*2 - 2*0 +3 = 4*2 +3 = 11
    

    和你的测试结果一致。

  2. 输出7×7的情况
    输入w=5,kernel_size=3,stride=2,padding=2

    output_w = (5-1)*2 -2*2 +3 = 8 -4 +3 =7
    

    这里padding=2意味着从初始输出的上下左右各裁剪2个像素,所以尺寸大幅缩小,完全符合你的观察。

  3. 输出13×13的情况
    输入w=5,kernel_size=5,stride=2,padding=0

    output_w = (5-1)*2 -0 +5 =8+5=13
    

    和测试结果一致。

  4. 输出15×15的情况
    输入w=5,kernel_size=3,stride=3,padding=0

    output_w = (5-1)*3 -0 +3=12+3=15
    

    完全匹配你的测试结果。

补充:带output_padding的情况

如果你的代码中用到了output_padding参数(用来解决stride>1时的尺寸歧义),公式需要调整为:

output_w = (w -1)*stride -2*padding + kernel_size + output_padding

output_padding的取值范围通常是0到stride-1之间,用来微调输出尺寸,一般默认是0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:32:20