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

如何通过转置卷积将4D张量(16,64,4,4)上采样至(16,64,4,6)

转置卷积参数选择方案

首先明确2D转置卷积的空间维度输出计算公式,这样才能精准匹配你需要的尺寸:
对于输入的高度(H_{in})、宽度(W_{in}),输出的高度(H_{out})和宽度(W_{out})满足:
( H_{out} = (H_{in} - 1) \times stride_h - 2 \times padding_h + kernel_size_h + output_padding_h )
( W_{out} = (W_{in} - 1) \times stride_w - 2 \times padding_w + kernel_size_w + output_padding_w )

你的需求是将输入空间维度((4,4))转为((4,6)),我们分维度调整参数即可:

  • 高度方向:输入和输出都是4,要保持维度不变。最简单的方式是让高度方向的stride=1、kernel_size=1、padding=0,代入公式计算:((4-1)1 -20 +1 +0 = 4),刚好匹配。
  • 宽度方向:输入4→输出6,需要增加2个像素。选stride=1的情况下,代入公式可得:(6 = (4-1)1 -2padding_w + kernel_size_w + output_padding_w),简化后是kernel_size_w - 2*padding_w + output_padding_w = 3。

下面给两个可行的参数组合:

  1. 直观的一维kernel组合(仅在宽度方向做扩展):

    nn.ConvTranspose2d(64, 64, kernel_size=(1, 3), stride=(1, 1), padding=(0, 0))
    

    验证:高度维度输出为((4-1)*1 -0 +1 +0 =4),宽度维度输出为((4-1)*1 -0 +3 +0=6),完全符合需求。

  2. 对称kernel组合(避免一维kernel):

    nn.ConvTranspose2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 0))
    

    验证:高度维度输出为((4-1)1 -21 +3 +0=4),宽度维度输出为((4-1)*1 -0 +3 +0=6),同样满足要求。

如果需要使用stride>1的配置,也可以根据公式反向推导参数,不过上面的组合是最直接、易理解的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:20:27