参考:打开链接

卷积:

就是这个图啦,其中蓝色部分是输入的feature map,然后有3*3的卷积核在上面以步长为2的速度滑动,可以看到周围还加里一圈padding,用更标准化的参数方式来描述这个过程:
二维的离散卷积(N=2)
方形的特征输入(\(i_{1}=i_{2}=i\))
方形的卷积核尺寸(\(k_{1} = k_{2}=k\))
每个维度相同的步长(\(s_{1}=s_{2}=s\))
每个维度相同的padding(\(p_{1}=p_{2}=p\))

\((i = 5, k = 3, s = 2, p = 1)\), \(输出特征尺寸o_{1} = o{2} = o\)
其中,卷积层输入特征与输出特征尺寸和卷积核参数的关系为: \(o = (floor)[\frac{i+2p-k}{s}+1]\)

反卷积


这里写图片描述
考虑一下这个图,其中的参数描述是:(i=4,k=3,s=1,p=0),输出o=2。
对于这个运算,我们把33的卷积核展开成如下图所示的[4,16]的稀疏矩阵,其中非0元素\(w_{ij}\)表示卷及核的第i行和第j列。

然后再把4
4的输入特征转换成[16,1]的矩阵X,那么Y=CX则是一个[4,1]的输出特征矩阵,把它重新排列2×2的输出特征就得到最终的结果,从上述分析可以看出卷积层的计算其实是可以转化成矩阵相乘的。值得注意的是,在一些深度学习网络的开源框架中并不是通过这种这个转换方法来计算卷积的,因为这个转换会存在很多无用的0乘操作,Caffe中具体实现卷积计算的方法可参考Implementing convolution as a matrix multiplication。通过上述的分析,我们已经知道卷积层的前向操作可以表示为和矩阵C相乘,那么我们很容易得到卷积层的反向传播就是和C的转置相乘。
反卷积的作用:噪声升维,上采样,从低维度进入高维度,比直接给定高维度随机形更强,这样就可以通过修改转置conv kernel去梯度下降出网络超参数

反卷积和卷积的关系

全面我们已经说过反卷积又被称为Transposed(转置) Convolution,我们可以看出其实卷积层的前向传播过程就是反卷积层的反向传播过程,卷积层的反向传播过程就是反卷积层的前向传播过程。因为卷积层的前向反向计算分别为乘 \(C\)
和 \(C^{T}\),而反卷积层的前向反向计算分别为乘 \(C^{T}\) 和 \((C^{T})^{T}\) ,所以它们的前向传播和反向传播刚好交换过来。

下图表示一个和上图卷积计算对应的反卷积操作,其中他们的输入输出关系正好相反。如果不考虑通道以卷积运算的反向运算来计算反卷积运算的话,我们还可以通过离散卷积的方法来求反卷积(这里只是为了说明,实际工作中不会这么做)。

同样为了说明,定义反卷积操作参数如下:
二维的离散卷积 \((N = 2)\)
方形的特征输入 \(i^{\prime}_{1}=i^{\prime}_{2}=i^{\prime}\)
方形的卷积核尺寸\(k_{1}^{\prime}=k_{2}^{\prime}=k^{\prime}\)
每个维度相同的步长\(s_{1}^{\prime}=s_{2}^{\prime}=s^{\prime}\)
每个维度相同的padding \(p_{1}^{\prime}=p_{2}^{\prime}=p^{\prime}\)

下图表示的是参数为\((i^{\prime} = 2, k^{\prime} = 3, s^{\prime} = 1, p^{\prime} = 2)\)的反卷积操作,其对应的卷积操作参数为\((i = 4, k = 3, s = 1, p = 0)\)。我们可以发现对应的卷积和非卷积操作其\((k = k ^{\prime}, s = s^{\prime} = 1)\),但是反卷积却多了\(p^{\prime} = 2\)。通过对比我们可以发现卷积层中左上角的输入只对左上角的输出有贡献,所以反卷积层会出现\(p^{\prime} = k - p - 1 = 2\).通过示意图,我们可以发现,反卷积层的输入输出在$ s = s^{\prime} = 1$的情况下关系为: \[o^{\prime} = i^{\prime} - k^{\prime} + 2p^{\prime} + 1 = i^{\prime} + (k-1) - 2p\]

Fractionally Strided Convolution

上面也提到过反卷积有时候也被叫做Fractionally Strided Convolution,翻译过来大概意思就是小数步长的卷积。对于步长 \(s>1\)
的卷积,我们可能会想到其对应的反卷积步长 \(s^{\prime}<1\)。z如下图所示为一个参数为 \(i=5,k=3,s=2,p=1\)的卷积操作(就是第一张图所演示的)所对应的反卷积操作。对于反卷积操作的小数步长我们可以理解为:在其输入特征单元之间插入 $s−1 $个0,插入0后把其看出是新的特征输入,然后此时步长 $ s^{\prime}$不再是小数而是为1。因此,结合上面所得到的结论,我们可以得出Fractionally Strided Convolution的输入输出关系为:
\[o^{\prime} = s(i^{\prime} -1)+k-2p\]

转载于:https://www.cnblogs.com/kk17/p/10094075.html

反卷积(转置卷积)的理解相关推荐

  1. 深度学习 | 反卷积/转置卷积 的理解 transposed conv/deconv

    原文:https://blog.csdn.net/u014722627/article/details/60574260 深度学习 | 反卷积/转置卷积 的理解 transposed conv/dec ...

  2. 分组卷积/转置卷积/空洞卷积/反卷积/可变形卷积/深度可分离卷积/DW卷积/Ghost卷积/

    文章目录 1. 常规卷积 2. 分组卷积 3. 转置卷积 4. 空洞卷积 5. 可变形卷积 6. 深度可分离卷积(Separable Convolution) 6.1 Depthwise Convol ...

  3. 深度学习卷积网络中反卷积/转置卷积的理解 transposed conv/deconv

    搞明白了卷积网络中所谓deconv到底是个什么东西后,不写下来怕又忘记,根据参考资料,加上我自己的理解,记录在这篇博客里. 先来规范表达 为了方便理解,本文出现的举例情况都是2D矩阵卷积,卷积输入和核 ...

  4. keras 实现 反卷积 转置卷积 deconv convtranspose

    keras中实现简单的反卷积 keras中转置卷积操作只有二维和三维的:即Conv2DTranspose 和Conv3DTranspose,没有一维的. 除了直接使用convXdTranspose,还 ...

  5. 对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解

    参考: https://zhuanlan.zhihu.com/p/28749411 https://zhuanlan.zhihu.com/p/28186857 https://blog.yani.io ...

  6. 一文搞懂转置卷积(反卷积)

    ↑ 点击蓝字 关注极市平台 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/158933003 极市导读 转置卷积在一些文献中也被称为反卷积,人们如果希望网络学习到上 ...

  7. 深度学习中常见卷积(普通卷积、1×1卷积、转置卷积、可分离卷积、膨胀(空洞)卷积、3D卷积)

      总是在网络上看到各种名词的卷积,但是有搞不懂是什么含义,于是结合网上查阅的资料,总结一下.目前比较常用的卷积主要有常规的卷积.1×1卷积.转置卷积.可分离卷积.膨胀卷积.3D卷积.   以下是一些 ...

  8. DW卷积、PW卷积、转置卷积、膨胀卷积(空洞卷积)、可变形卷积一次看个够

    Depthwise Separable Convolution也就是深度可分离卷积,应该见过吧,它其实是由depthwise卷积和pointwise卷积组合而成,同样可以用来提取图像特征,但是它的计算 ...

  9. 亚像素卷积和转置卷积

    CNN中对特征图进行上采样常用的操作有转置卷积和亚像素卷积 1.转置卷积 转置卷积(Transposed Convolution)又称为反卷积(Deconvolution) 先看下普通的卷积过程: 如 ...

  10. 转置卷积和膨胀卷积详细讲解

    目录 转置卷积(Transposed Convolution) 作用 转置卷积的输出 转置卷积过程 转置卷积运算过程 pytorch中转置卷积对应参数 膨胀卷积(空洞卷积,Atrous convolu ...

最新文章

  1. IntelliJ IDEA控制台输出中文乱码问题解决
  2. Too many levels of symbolic links
  3. 【排序】冒泡排序算法
  4. Linux的.a .so和.o文件
  5. MikroTik RouterOS x86最大内存只能支持2G
  6. leetcode —— 16. 最接近的三数之和
  7. 条件渲染-v-if // v-else // v-else if // v-show
  8. CCF201403-1 相反数(解法二)(100分)(废除!!!)
  9. [渝粤教育] 西南科技大学 高速铁路线路与车站 在线考试复习资料
  10. PyQt5的笔记(中-1)
  11. 管家婆打印模板设置_B端移动设计 | 打印配置
  12. 人生苦难重重,如何解决人生的问题?| 读《少有人走的路:心智成熟的旅程》
  13. CTF-Tools 一款CTF古典密码加解密工具
  14. 写好英语科技论文的诀窍: 主动迎合读者期望,预先回答专家可能质疑
  15. 夜神模拟器-软件apk存放目录
  16. 易语言服务器取cookie,易语言取设COOKIES的代码
  17. 用huggingface.transformers在文本分类任务(单任务和多任务场景下)上微调预训练模型
  18. 2020-05-12
  19. 第六章 Java API
  20. PwC普华永道信息技术2023助理软件工程师面经总结

热门文章

  1. 稳态可压Navier-Stokes方程组在修正Dirichlet边界下的解的存在性
  2. 软件研发设计经验总结
  3. 【Demo 0015】坐标系
  4. 无聊时对连分数的思考
  5. 如何修改linux的 系统语言
  6. jq使用教程02_安装的问题
  7. 制药企业核算报表系统整体方案
  8. 刘宏伟计算机组成,哈工大组成原理和数据结构 ppt 计算机组成原理刘宏伟 版本一 第18讲...
  9. linux管理包安装软件命令,和vi/vim使用方法
  10. mysql常量,变量,循环语句,存储过程,触发器,分隔符