当前位置:网站首页>转置卷积(Transposed Convolution)
转置卷积(Transposed Convolution)
2022-04-23 05:30:00 【意念回复】
目录
2.2.1 一维形式
转置卷积(Transpose Convolution),一些地方也称为“反卷积”,在深度学习中表示为卷积的一个逆向过程,可以根据卷积核大小和输出的大小,恢复卷积前的图像尺寸,而不是恢复原始值。
1 卷积操作及转置卷积的定义
1.1 卷积操作
对于一个输入大小为
的图像,卷积核大小为
:

计算输出
的具体实现方法为矩阵乘法。
将卷积核表示为稀疏矩阵![]()

每一行向量表示在一个位置的卷积操作,0填充表示卷积核未覆盖到的区域。
将输入
展开为列向量:

则卷积操作可以表示为:
输出向量
的大小为
的列向量,改写为矩阵即为
。
1.2 转置卷积
现在,考虑一下我们如何换一个计算方向。也就是说,我们想要建立在一个矩阵中的1个值和另外一个矩阵中的9个值的关系。这就是像在进行卷积的逆向操作,这就是转置卷积的核心思想。
(译者注:从信息论的角度看,卷积是不可逆的。所以这里说的并不是从output矩阵和kernel矩阵计算出原始的input矩阵。而是计算出一个保持了位置性关系的矩阵。)


转置卷积则是将
中的输入输出互换:

表示矩阵转置,此时大小为
。- 即由
的输入
,经过转置卷积,得到输出大小为
的列向量
,此时
的 数值上已经和原来不同,只是在形状上一致。
1.3 转置卷积的步骤

示例:


卷积的计算方式:

转置矩阵的计算步骤:







2 转置卷积的理解
2.1 stride=1转置卷积的理解
2.1.1 一维形式

这样能得到和转置卷积相同的结果。其实就是为转置卷积的输入
添加额外的padding,而卷积核则是镜像翻转的。这里仍然是比较元素位置关系的对应,不考虑数值。
这样的理解有什么用呢?
由于转置卷积的卷积核也是可learning的,在给定了输入和卷积核的大小后,我们可以将转置卷积看做是有padding的普通卷积。也就是说,所谓的转置卷积,等价于普通卷积,无非是padding较大时,可以达到上采样的效果。
2.1.2 二维形式


2.1.3 公式计算
对于
的普通卷积,等价的转置卷积的输出大小为:
。同时要求转置卷积的输入添加
。即转置卷积实现输出变大是卷积核的影响。

2.2 stride>1转置卷积的理解
2.2.1 一维形式

2.2.2 二维形式

同样等价于输入添加空洞,额外padding,卷积核水平竖直翻转的普通卷积:

2.2.3 公式计算

下图展示了转置卷积中不同s和p的情况:
![]() |
![]() |
![]() |
| s=1, p=0, k=3 | s=2, p=0, k=3 | s=2, p=1, k=3 |
3 总结
转置卷积和普通卷积有相同的本质: 建立了一些值之间的关系。 只不过,转置卷积所建立的这个关系与普通卷积所建立的关系,方向相反。
我们可以使用转置卷积来进行上采样。并且,转置卷积中的权重是可以被学习的。因此,我们没有必要搞什么插值方法来做上采样。
尽管它被称作转置卷积, 但是这并不意味着我们是拿一个已有的卷积矩阵的转置来作为权重矩阵的来进行转置卷积操作的。和普通卷积相比,intput和output的关系被反向处理(转置卷积是1对多,而不是普通的多对1),才是转置卷积的本质.
正因如此,严格来说转置卷积其实并不算卷积。但是我们可以把input矩阵中的某些位置填上0并进行普通卷积来获得和转置卷积相同的output矩阵。 你可以发现有一大把文章说明如何使用这种方法实现转置卷积。 然而, 因为需要在卷积操作之前,往input中填上许多的0,这种方法其实有点效率问题。
警告:转置卷积会在生成的图像中造成棋盘效应(checkerboard artifacts).。本文推荐在使用转置卷积进行上采样操作之后再过一个普通的卷积来减轻此类问题。如果你主要关心如何生成没有棋盘效应的图像,需要读一读paper。
转置卷积(Transpose Convolution) - 知乎
版权声明
本文为[意念回复]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_39910711/article/details/124342599
边栏推荐
- egg中的多进程模型--egg文档搬运工
- Create process memory management copy_ Mm - processes and threads (IX)
- CPT 104_ TTL 09
- World and personal development
- STL learning notes 0x0001 (container classification)
- The prefix of static of egg can be modified, including boots
- npm升级后问题,慌得一批
- Requirements for SQL server to retrieve SQL and user information
- 2021-10-08
- Watch depth monitoring mode
猜你喜欢

Use of ES6 array

C, class library

STL learning notes 0x0001 (container classification)

Excel 2016 打开文件第一次打不开,有时空白,有时很慢要打开第二次才行

分支与循环语句

2021-10-12

狼叔来找翻译人员了--plato--持续翻译中.....

Laravel routing job

Graphics. Fromimage reports an error "graphics object cannot be created from an image that has an indexed pixel..."

The title bar will be pushed to coincide with the status bar
随机推荐
Pavlov and hobbies
(11) Vscode code formatting configuration
Quick app bottom navigation bar
日志简介和构建web应用
The prefix of static of egg can be modified, including boots
C, class library
Wbpack configuring production development environment
创建进程内存管理copy_mm - 进程与线程(九)
Call the interface to get the time
If I am PM's performance, movie VR ticket purchase display
Intel SGX preliminary learning and understanding notes (continuously updated)
C# ,类库
Output string in reverse order
!!!!!!!!!!!!!!!!!!
点击添加按钮--出现一个框框(类似于添加学习经历-本科-研究生)
STL learning notes 0x0001 (container classification)
JVM memory and memory overflow exceptions (personal summary)
Executable program execution process
CPT 104_ TTL 09
QT displays the specified position and size of the picture


