龙空技术网

什么是转置卷积,转置卷积计算方法详解

小黑黑讲AI 199

前言:

眼前兄弟们对“转置运算性质”大约比较注重,你们都想要了解一些“转置运算性质”的相关内容。那么小编同时在网络上收集了一些对于“转置运算性质””的相关知识,希望小伙伴们能喜欢,你们一起来学习一下吧!

大家好,我们今天要讲的内容是转置卷积的概念和计算方法。

转置卷积,英文是Transposed Convolution,也被称为反卷积。

它与传统的卷积操作不同,可以基于较小的特征图生成较大的特征图。

在很多计算机视觉任务中,都会用到转置卷积。

例如,在图像分割任务中,会使用转置卷积,恢复图像的原始尺寸:

具体来说,输入图像会通过一系列的卷积层,逐步降低图像的尺寸,提取特征。

接着为了得到与原始图像相同尺寸的分割图,需要使用转置卷积,逐步恢复特征图的尺寸。

在生成对抗网络的生成器中,生成器接收一个噪声向量z。

向量z会经过一系列的转置卷积层:

通过转置卷积,逐渐放大噪声向量,增加特征图的细节,最终生成复杂的图像。

转置卷积的计算是上采样的过程:

实际上,有很多种上采样的方法,例如,最近邻插值、双线性插值等等。

但是这些上采样的方法都是基于人们的先验经验来设计的,对于很多场景效果并不理想。

通过将转置卷积放置到神经网络中:

就可以使神经网络自主的学习,来获取最优的上采样方式。

因此,转置卷积在处理复杂的上采样任务时更加的灵活和有效。

1.转置卷积的计算方法

转置卷积的计算过程如下。

我们以2*2的输入数据X和2*2的卷积核W为例进行说明。

在计算转置卷积时,矩阵x中的每个元素,都会与整个卷积核W相乘。

这样矩阵X中的每个元素,都被扩展成了一个与卷积核大小相同的输出矩阵。

例如,x11与W相乘、x12与W相乘,等等。

然后将这4个小矩阵,放置在一个更大的矩阵中:

并根据步长,调整小矩阵在输出矩阵中的放置间隔,重叠的部分需要累加。

例如,在步长stride=1时,生成了一个3*3的结果矩阵。

下面是一个具体计算案例,在输入数据中,包含了0、1、2、3,卷积核中有1、4、2、3。

这里将步幅stride设置为2,在计算过程中,不会产生重叠。

第1步,生成左上角,为4个0。

然后向右移动2步,生成右上角,结果是1、4、2、3。

接着是左下角和右下角。

最终会生成4×4的输出结果。

2.基于矩阵乘法,理解转置卷积

回顾卷积运算:

设输入数据X,是一个3*3的矩阵。

卷积核W是一个2*2的矩阵。

如果使用卷积核W,在输入数据X上进行卷积运算,它的计算结果为Y。

Y可以使用x和w来表示。

卷积运算的过程,可以使用矩阵乘法进行模拟。

设置矩阵C,将卷积核W中的四个元素w11、w12、w21、w22放到矩阵C中:

将矩阵C构造为一个稀疏矩阵,它是一个4*9的矩阵。

接着将输入数据X中的9个元素,放到一个9*1的列向量中,并计算y=C*X。

其中y即为卷积核W在输入数据X上进行卷积运算的结果。

它是一个4乘1的列向量。

我们可以使用x和w,进一步表示y:

矩阵相乘的结果与卷积运算的结果是一样的。

转置卷积的计算过程,同样可以使用矩阵乘法来表示。

前面我们将W放置在了4*9的稀疏矩阵C中。

此时,将矩阵C进行转置,得到矩阵CT,CT是一个9*4的矩阵。

将输入的x向量放到4*1的列向量中,然后计算CT*x=y。

计算结果y就是9*1的矩阵。

我们可以将计算结果,重新放到3*3的矩阵中:

这个结果与前面转置卷积运算的结果是一样的。

3.其他角度理解转置卷积

另外,我们也可以通过普通的卷积运算来说明转置卷积的计算过程。

首先,将卷积核W同时进行水平和垂直方向的翻转,得到的W包含了,w22、w21、w12和w11,四个元素。

然后对输入x,进行padding=1的填充。

并使用翻转后的W,在填充后的x上进行标准的卷积运算:

就会得到一个3*3的计算结果。

该结果与转置卷积的运算结果是相同的。

那么到这里,转置卷积的概念和计算方法就讲完了,感谢大家的观看,我们下节课再会。

标签: #转置运算性质