直观理解Transpose Convolution

首先,先上结论,Transpose Convolution 可以看成是在原始input的基础上做padding之后的常规Convolution. 所以常规的Convolution的计算性质也适用于Transpose Convolution.

需要特别注意的是,Trans Conv中的stride和常规Conv的stride有点不太一样的是,常规Conv的stride是对kernel的移动步长,而Trans Conv的stride是对输入input元素间的间隔。常规的Conv 以及其对应的Trans Conv的具体过程请看下面两幅图

用 i 代表input , k 代表kernel,s代表stride,p代表padding

Stride为1时

常规的 Conv , i = 4x4 , k = 3x3 , s = 1, p = 0

image-20220220111717315

Trans Conv , i=2x2 , k = 3x3 , s = 1 , p = 2

image-20220220110623676

图中灰色代表kernel,蓝色是input,绿色是output

上图中可以看出,在Trans Conv过程中,原始的2x2的input被padding成了6x6,再进行常规的Conv,而kernel保持不变(3x3),从而使得经过Trans Conv后,2x2的“input”被恢复成了5x5的"output"

Stride > 1时

常规的Conv ,i = 5x5 ,k = 3x3 ,s = 2,p = 0

image-20220220112559847

Trans Conv ,i = 2x2,k= 3x3,s = 2,p = 2

image-20220220112445269

与之前stride=1的图不一样的是,stide>1时,Trans Conv中的input的元素间会充填 stride-1行(列)0(类似Dilated Convolution中的膨胀因子d的作用)而kernel滑动的步长仍然保持不变 (Trans Conv 的滑动步长始终等于 1),这与常规Conv中stride的作用有着本质的区别。

计算公式

常规Conv

H o u t = ⌊ H i n + 2 × p − k s + 1 ⌋ H_{out} =\left\lfloor\frac{H_{in} + 2 \times \text{p} - \text{k} }{\text{s}} + 1\right\rfloor Hout=sHin+2×pk+1

Trans Conv

H o u t = H i n + ( H i n − 1 ) ( s − 1 ) + 2 ( k − p ′ − 1 ) − k + 1 H_{out} = H_{in} + (H_{in} - 1 )(s- 1) + 2(k - p'- 1) - k+ 1 Hout=Hin+(Hin1)(s1)+2(kp1)k+1

注:p’ 为转置卷积充填的padding大小, k 为卷积核大小,p 为设置的padding大小, 其中 p ′ = k − p − 1 p' = k - p - 1 p=kp1 最终化简得到如下表达式:

H o u t = ( H i n − 1 ) × s − 2 p ′ + k H_{out} = (H_{in} - 1) \times s - 2 p' + k Hout=(Hin1)×s2p+k

注: 这里的 p’ 实际上控制着输出图像的大小,从公式 p ′ = k − p − 1 p' = k - p - 1 p=kp1 可以看出,如果设定的padding 大小p 刚好满足 p = k - 1 的话,那么卷积核刚好覆盖了padding区域和有实际值的区域,输出的图像大小就不需要减去p’,即此时p’ = 0。否则,当设定的padding大小p 小于 k - 1,此时卷积核区域超出了有实际值的区域和padding区域,利用了一些隐式设定的值来满足计算要求,那么最后输出的图像外围就包含了一些不该存在的值,由于p < k - 1 此时,p’ >0 ,所以输出图像需要减去2p’ 来消除上述影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daimashiren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值