看了不少反卷积和转置卷积的文章,彷佛仍是一头雾水,记录下本身理解的过程~网络
有人一句话总结:逆卷积相对于卷积在神经网络结构的正向和反向传播中作相反的运算。其实仍是不是很理解。ide
反卷积(转置卷积)一般用来两个方面:spa
1. CNN可视化,经过反卷积将卷积获得的feature map还原到像素空间,来观察feature map对哪些pattern相应最大,便可视化哪些特征是卷积操做提取出来的;3d
2. FCN全卷积网络中,因为要对图像进行像素级的分割,须要将图像尺寸还原到原来的大小,相似upsampling的操做,因此须要采用反卷积;blog
3. GAN对抗式生成网络中,因为须要从输入图像到生成图像,天然须要将提取的特征图还原到和原图一样尺寸的大小,即也须要反卷积操做。ip
其实这里卷积核B的参数仍然只有9个,加上多个稀疏值0,来构成一个Toeplitz matrix和输入进行矩阵乘积操做。这里为何B的shape会是16×4呢,由于其实输入是[4,4],实际上是有16个值,因此第一维是16,而后由于kernel_size为3,4×4大小的输入须要计算四次,因此第二维是4。input
若是你不理解Toeplitz matrix是怎么来的,你能够在草稿纸上笔划一下,即一个4×4的输入矩阵和一个3×3的卷积核进行卷积操做,而后对照[1,16]*[16,4]矩阵相乘,你会发现其实计算的结果是同样的。数学
另外要说明一点反卷积和转置卷积的真正区别:it
反卷积在数学含义上是能够还原输入信号的;可是转置卷积只能还原到原来输入的shape,其value值是不同的。io
咱们知道,池化是不可逆的过程,然而咱们能够经过记录池化过程当中,最大激活值得坐标位置。而后在反池化的时候,只把池化过程当中最大激活值所在的位置坐标的值激活,其它的值置为0,固然这个过程只是一种近似,由于咱们在池化的过程当中,除了最大值所在的位置,其它的值也是不为0的。
2018.09.03
这里说一下什么是上采样。
实际上,上采样(upsampling)通常包括2种方式:
传统的网络是subsampling的,对应的输出尺寸会下降;upsampling的意义在于将小尺寸的高维度feature map恢复回去,以便作pixelwise prediction,得到每一个点的分类信息。