目录
转置卷积(Transposed Convolution)
相关文章:
一文搞懂反卷积,转置卷积
A guide to convolution arithmetic for deep learning
如何理解深度学习中的deconvolution networks
Convolution arithmetic tutorial
Convolution arithmetic(不同卷积的 gif 图)
转置卷积(Transposed Convolution) 又被称作:
- Deconvolution (错误表述)
- Fractionally strided convolution
- Backward strided convolution
转置卷积操作构建了和普通的卷积操作一样的连接关系,只不过这个是从反向方向开始连接的。我们可以用它进行上采样(对比于最近邻插值,双线性差值等方法,优点为参数可训练)。
转置卷积不是意味着我们将一些现存的卷积矩阵简单转置并且使用其转置后的值。转置卷积矩阵的参数,不一定是从原始的卷积矩阵中简单转置得到的,转置这个操作只是提供了转置卷积矩阵的形状。转置卷积矩阵的参数是可以学习的,因此不需要一些人为预先定义的方法。
我们可以在输入矩阵中的元素之间插入0进行补充,然后通过普通的卷积操作就可以产生和转置卷积相同的效果,从而实现尺寸上采样。因为通常在卷积操作之前需要在输入中添加许多列和许多行的0,因此实现效率很低。
在 pytorch 中,转置卷积的参数初始化方式和普通卷积的初始化相同,即随机初始化一个符合尺寸要求的Tensor,在forward过程中并没有根据输入进行权值的所谓“转置”之类的操作。
转置卷积参数的计算
1. No zero padding, unit strides, transposed
考虑到普通卷积中的连接模式(connectivity pattern),直接卷积输入图像的左上像素仅对输出的左上像素起作用,右上像素仅对输出的右上像素起作用,依此类推。
Convolution:
所以,为了在反卷积卷积中保持相同的连接模式,必须对输入进行零填充,以使内核的左上像素值仅连接输出图像左上像素。四周的填充数均等于内核大小减一,即
p
a
d
d
i
n
g
=
k
e
r
n
a
l
_
s
i
z
e
−
1
padding=kernal\_size-1
padding=kernal_size−1。
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式:
2. Zero padding, unit strides, transposed
Convolution:
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式:
3. Half (same) padding, transposed
输入尺寸和输出尺寸相等
Convolution:
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式:
4. Full padding, transposed
Convolution:
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式:
5. No zero padding, non-unit strides, transposed
在此类情况下,transposed convolutions 有时又被称为 fractionally strided convolutions
Convolution:
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式:
6. Zero padding, non-unit strides, transposed
6.1
Convolution:
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式:
6.2
Convolution:
Transposed Convolution:
该情况下转置卷积参数计算参照如下公式: