pytorch中 nn.ConvTransposed2d 的使用

前驱知识

卷积与反卷积

符号规定:

卷积过程

  • input_size = i
  • kernel_size = k
  • stride = s
  • padding = p
  • output_size = o

对应的反卷积过程:

  • input_size = i’
  • kernel_size = k’
  • stride = s’
  • padding = p’
  • output_size = o’
  • a = (i+2p-k)%s,即无法完整卷积的余数

且有:k’=k, s’=1, i’=o, o’=i

nn.ConvTranspose2d()关键参数

  • in_channels(int) – 输入的通道数
  • out_channels(int) – 卷积产生的通道数
  • kerner_size(int or tuple) - 与此次反卷积对应的卷积的卷积核大小,即 k
  • stride(int or tuple,optional) - 与此次反卷积对应的卷积的卷积步长,即 s
  • padding(int or tuple, optional) - 与此次反卷积对应的卷积的单侧padding大小,即 p
  • output_padding(int or tuple, optional) - 输出边补充0的层数,即 a

例如,一张 (1, 3, 14, 14)的图像,使用ConvTranspose2d(3, 1, kernel_size=3, stride=2, padding=1, output_padding=1)进行反卷积:
i’=14,
k=3,
s=2,
p=1,
a=1.
根据反卷积计算规则:
k’=k=3,
s’=1,
p’=k-1-p=1,
因为s>1,对i’内部填充0,i’’=14+(s-1)(14-1)=27
所以,反卷积之后的输出尺寸为:
o’ = (i’’+2
p’-k’+a)/s’ + 1 = (27+2*1-3+1)/1 + 1 = 28
输出尺寸翻倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值