如何理解转置卷积(transposed convolution)

简介

转置卷积也被称为反卷积,常被用用于CNN中的上采样操作,比如分割任务,或GAN网络中。反卷积并不是常规卷积的完全逆操作,反卷积也起不到根据输出特征以及对应的卷积核,恢复原始输出的作用,它最多的作用就是有可学习参数的上采样操作,仅此而已。
同时,反卷积操作并没有把正向卷积输出,对应的卷积核拿过来做转置使用,而是多了几个卷积核而已。
此外,即便是把正向卷积输出对应的卷积核拿过做反卷积,它也恢复不出来原来的参数,恢复原来参数这种操作看起来并没有太大意义,因为只是想做上采样而已。
这里与常规卷积的区别主要体现在:

  • 特征图的宽高尺寸变化与常规卷积相反
  • 常规卷积核的转置

所以实际上,反卷积是先按照一定的比例差值 来扩大输入图像的尺寸,再进行正向卷积的过程。

反卷积计算

输入特征图尺寸: h i = 3 h_{i}=3 hi=3 w i = 3 w_{i}=3 wi=3
卷积核尺寸: h k = 3 h_{k}=3 hk=3 w k = 3 w_{k}=3 wk=3
步长: s = 2 s=2 s=2
padding:单边 p = 1 p=1 p=1
期望输出特征尺寸: h o = 5 h_{o}=5 ho=5 w o = 5 w_{o}=5 wo=5
上面这些参数能完整的体现一个反卷积的过程,那么下面是具体的过程

输入特征图插值计算

对于一个输入为 h i = 3 h_{i}=3 hi=3 w i = 3 w_{i}=3 wi=3的特征图,反卷积首先需要对输入进行插值,这就涉及到三个问题:

  • 在哪里补?
  • 补多少?
  • 补什么?

插值一般都是插入0,因为特征图的输入为尺寸为 h i h_{i} hi w i w_{i} wi,那么就有 h i − 1 h_{i}-1 hi1 w i − 1 w_{i}-1 wi1位置可以插入0,每个位置插入0的个数为 s − 1 s-1 s1个,插值后特征图就变成了:
h n i = h i + ( h i − 1 ) ( s − 1 ) = 5 h_{ni}=h_{i}+(h_{i}-1)(s-1)=5 hni=hi+(hi1)(s1)=5
w n i = w i + ( h i − 1 ) ( s − 1 ) = 5 w_{ni}=w_{i}+(h_{i}-1)(s-1)=5 wni=wi+(hi1)(s1)=5

正向卷积

对新的特征图做正向卷积,正向卷积的实际步长不是2,而是1,之前设置的步长是体现在插值上,反卷积的卷积步长总是为1。
此外,同样需要对输入特征做padding,两边各padding1。
那么按照常规的卷积公式:
h o = ( h n i + 2 p − h k ) / 1 + 1 = 5 h_{o}=(h_{ni}+2p-h_{k})/1+1=5 ho=(hni+2phk)/1+1=5
w o = ( w n i + 2 p − w k ) / 1 + 1 = 5 w_{o}=(w_{ni}+2p-w_{k})/1+1=5 wo=(wni+2pwk)/1+1=5
得到了想要的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值