​​​​(转)对于反卷积概念的理解

【时间】2018.10.10

【题目】(转)对于反卷积概念的理解

【原文链接】https://buptldy.github.io/2016/10/29/2016-10-29-deconv/

 

反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其之后的工作中(Adaptive deconvolutional networks for mid and high level feature learning)。随着反卷积在神经网络可视化上的成功应用,其被越来越多的工作所采纳比如:场景分割、生成模型等。其中反卷积(Deconvolution)也有很多其他的叫法,比如:Transposed Convolution,Fractional Strided Convolution等等。

 

这篇文章的目的主要有两方面:

1. 解释卷积层和反卷积层之间的关系;

2. 弄清楚反卷积层输入特征大小和输出特征大小之间的关系。

从上述例子我们可以总结出卷积层输入特征与输出特征尺寸和卷积核参数的关系为:

反卷积层

在介绍反卷积之前,我们先来看看卷积运算和矩阵运算之间的关系。

卷积和矩阵相乘

考虑如下一个简单的卷积层运算,其参数为(i=4,k=3,s=1,p=0),输出 o=2

                              

对于上述卷积运算,我们把上图所示的3×3卷积核展成一个如下所示的[4,16]的稀疏矩阵 CC, 其中非0元素,jwi,j 表示卷积核的第 i行和第 j 列。

⎛⎝⎜⎜⎜⎜

我们再把4×4的输入特征展成[16,1]的矩阵 X,那么 Y=CX 则是一个[4,1]的输出特征矩阵,把它重新排列2×2的输出特征就得到最终的结果,从上述分析可以看出卷积层的计算其实是可以转化成矩阵相乘的。值得注意的是,在一些深度学习网络的开源框架中并不是通过这种这个转换方法来计算卷积的,因为这个转换会存在很多无用的0乘操作,Caffe中具体实现卷积计算的方法可参考Implementing convolution as a matrix multiplication

通过上述的分析,我们已经知道卷积层的前向操作可以表示为和矩阵CC相乘,那么 我们很容易得到卷积层的反向传播就是和CC的转置相乘

 

【补充说明】: 只有方阵才有逆,这里的矩阵C只能用转置,才能保证维度一致。所以反卷积输出的结果和原正向卷积的输入也不是一个东西,只是维度相同 只有方阵才有逆。

 

反卷积和卷积的关系

 

下图表示一个和上图卷积计算对应的反卷积操作,其中他们的输入输出关系正好相反。如果不考虑通道以卷积运算的反向运算来计算反卷积运算的话,我们还可以通过离散卷积的方法来求反卷积(这里只是为了说明,实际工作中不会这么做)。

同样为了说明,定义反卷积操作参数如下:

    

 

Fractionally Strided Convolution

                                      

 

 

【总结】

  • 反卷积在结果也是通过卷积运算获得的,其中卷积核是原卷积核的转置

  • 这里转置指核值左右、上下颠倒,比如,

原卷积核:

 

W00

W01

W02

W10

W11

W12

W20

W21

W22

变为:

W22

W21

W20

W12

W11

W10

W02

W01

W00

 

  • 反卷积填充为:

  • 当s>1时,需要在其输入特征单元之间插入 s−1 个0,再进行卷积。

参考

conv_arithmetic

Is the deconvolution layer the same as a convolutional layer?

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值