天天看点

理解转置卷积(反卷积 分步卷积)

文章目录

  • 转置卷积
  • Convolution as matrix operation
  • Transposed convolution
  • 理解

GAN涉及到转置卷积,这里mark一下忘记了再回来看下。

转置卷积

转置卷积源于与卷积方向相反的愿望,即从卷积的output形状到input形状,同时保持与卷积相兼容的一种模式。转置卷积可以作为卷积编码器的解码器(decode)的转换,或者将当前特征映射到一个高维度的空间。

Convolution as matrix operation

要理解转置卷积,先从卷积开始。

我们先从2D卷积运算,kernel=3,input=4x4,stride=1,output=2x2,padding=valid。

我们将卷积运算转化为矩阵运算,将kernel转化为矩阵

的,将input转化为矩阵

,通过两个矩阵的相乘获取的

矩阵reshape为2X2的卷积结果。即

我们以C的第一行为例,第一行要完成与input[:3,:3]乘加,其他不需要乘的对应权重则在这一行置为0。也可以这样理解,这一行的每一个元素都与X的每一个元素相对应,不需要乘的记为0即可。最终获得C矩阵如下图。

理解转置卷积(反卷积 分步卷积)

Transposed convolution

我们再来考虑另一个方向,将2x2作为输入转化为4x4,按照卷积步骤,并将C转置。

上述称之为转置卷积。kernel定义卷积和转置卷积,卷积和转置卷积取决于前向和后向运算。对于卷积而言,前向和反向通过

。对于转置卷积而言,其前向和反向通过

理解