【深度学习】反卷积(transposed convolution)介绍
反卷积与卷积
反卷积,顾名思义是卷积操作的逆向操作。
为了方便理解,假设卷积前为图片,卷积后为图片的特征。
卷积,输入图片,输出图片的特征,理论依据是统计不变性中的平移不变性(translation invariance),起到降维的作用。如下动图:
反卷积,输入图片的特征,输出图片,起到还原的作用。如下动图:
我们知道卷积结合池化的降维作用,将神经网络推向深度学习,开启神经网络的新世界,那么反卷积的作用呢?
反卷积的作用
反卷积崭露头角于“Unsupervised Representations Learning With Deep Convolutional Generative Adversarial Networks”,这篇论文主要工作就是用GANs生成图片,其中的generator和discriminator均采用深度学习,generator生成图片过程中采用的就是反卷积操作(当然discriminator采用卷积对generator生成的图片判别真伪)。generator生成图片示意:
反卷积的类型
-
一般类型:
输入:2*2
计算过程:2+2*2-3+1
输出:4 -
fractionally-strided convolution:
输入:3*3
计算过程:3+4-3+1
输出:5
fractionally-strided,小数步数,体现在往间隙padding,名义上stride=1,但实际作用却是小于1!
Tensorflow中反卷积的实现
tf.nn.conv2d_transpose(value, filter, output_shape, strides, padding=’SAME’, data_format=’NHWC’, name=None)
参数解释:
value:[batch,in_height,in_width,in_channels]
filter:[batch,k_width,out_channels,in_channels]
output_shape:[batch,output_height,output_width,output_channels]
strides:对应在每一维的移动步数