您的位置:首页 > 其它

【深度学习】转置卷积(Transposed Convolution)

2020-02-04 06:21 344 查看

目录

转置卷积(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:
所以,为了在反卷积卷积中保持相同的连接模式,必须对输入进行零填充,以使内核的左上像素值仅连接输出图像左上像素。四周的填充数均等于内核大小减一,即 padding=kernal_size−1padding=kernal\_size-1padding=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:

该情况下转置卷积参数计算参照如下公式:

  • 点赞
  • 收藏
  • 分享
  • 文章举报
齐立青 发布了6 篇原创文章 · 获赞 1 · 访问量 654 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: