前言:
眼前兄弟们对“转置运算性质”大约比较注重,你们都想要了解一些“转置运算性质”的相关内容。那么小编同时在网络上收集了一些对于“转置运算性质””的相关知识,希望小伙伴们能喜欢,你们一起来学习一下吧!大家好,我们今天要讲的内容是转置卷积的概念和计算方法。
转置卷积,英文是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的计算结果。
该结果与转置卷积的运算结果是相同的。
那么到这里,转置卷积的概念和计算方法就讲完了,感谢大家的观看,我们下节课再会。
标签: #转置运算性质