为什么说转置卷积(Transposed Convolution)是通过卷积的反向传播(Backward Pass)来实现的

卷积的反向传播

以一个input为3x3,kernel为2x2,卷积得到2x2的output为例:

其计算关系如下:

用矩阵乘法表示为:

根据链式法则,代价函数C对a求导等于:

令:

根据上述公式可得:

用卷积可以表示为:

或者用矩阵乘法表示为:

注:这一步其实可以通过矩阵求导公式直接得到:

我们可以发现:

因此:

卷积的反向传播,本质上是转置卷积(Transposed Convolution) 

或者说,转置卷积在工程上是通过计算正向卷积的反向传播来实现的

转置卷积的计算等价

我们还发现,转置卷积可以通过在input外面padding (kernel-padding-1),内部padding (stride-1)然后将卷积核旋转180°的正向卷积来实现:

同样以上述卷积的转置卷积为例(input为2x2,kernel为2x2,得到3x3的output):

这个算式可以通过卷积来实现:

因此,这个卷积:

他的转置卷积可以这样计算:

结论:转置卷积可以通过在input外面padding (kernel-padding-1),然后将卷积核旋转180°的正向卷积来实现

Stride卷积的转置

对于一个步长不为1的卷积:

我们可以有如下insight:

1. stride大于1的卷积层扮演了下采样的角色

2. stride的含义是kernel每次移动的步数,但也可以看成是每n步只保留1步的结果,舍弃其他部步。

例如:stride=2可以看为:以stride=1进行卷积,但最后只保留奇数元素

因此,stride卷积的转置,也是相反的路径

可视化就是如下:

结论:Stride的转置卷积,可以看做在内部padding (stride-1)的正向卷积,这也是Transposed Convolution也被叫做Fractionally Strided Convolution的原因,比如原来stride=1,其转置卷积的stride=1/2

备注:可视化gif图来自https://github.com/vdumoulin/conv_arithmetic/tree/master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值