every blog every motto: We would rather reuse an active dwarf than a sleeping giant.

0. 前言

一直划水。。。

1. 正文

1.1 Conv2D

说明: 关于这部分之前有写过,所以就不详细展开了,具体可以参考参考文章1 参考文章2


输出特征图计算:

1.2 Conv2DTranspose

Conv2DTranspose一般称为反卷积、逆卷积等,对图片进行一个上采样过程,即放大图片
主要通过三步进行:

  1. 对输入特征图m进行变换,生成新的输入特征图m’
  2. 对卷积核k进行变换,生成新的卷积核k’
  3. 用上面产生的新的输入特征图和新的卷积核进行1.1中的常规卷积操作

变量说明:
输入特征图:(H,W)
卷积核:(K,K),步幅:S,填充padding


1.2.1 分步骤讲解

第一步:对输入特征图进行变换

对输入特征图进行插值,输入特征图值之间插0,如下图

当然,具体来说:
两个相邻位置中间的插0个数: S-1
对应输入的高为H,中间有(H-1)个空隙,则
高度方向上总插0个数: (H-1)*(S-1)


新的输入特征图的大小,以高度为例:
H’ = H + (H-1)*(S-1)

第二步:对卷积核进行变换

说明: 准确说是填充变换。

  1. 卷积核大小不变:(K,K)
  2. 步幅,S’=1 ,这里不好理解,后面解释
  3. 填充:padding’ = K-padding-1
第三步:普通卷积操作

由1.1知,普通卷积的特征图变换为

Hout=(Hin+2p−k)S+1Hout = \frac{ (Hin+2p-k)}{S}+1 Hout=S(Hin+2p−k)​+1
将第一、二步中变换的结果代入上式,的

Hout=H+HS−H−S+1+2K−2padding−2−kS′+1Hout = \frac{H+HS-H-S+1+2K-2padding-2-k}{S'}+1 Hout=S′H+HS−H−S+1+2K−2padding−2−k​+1
化简,得:
Hout=(H−1)S+K−2padding−1S′+1Hout = \frac{(H-1)S+K-2padding-1}{S'}+1 Hout=S′(H−1)S+K−2padding−1​+1
上式中分母步幅为1,则
最终结果为:
Hout=(H−1)S+K−2paddingHout = (H-1)S+K-2padding Hout=(H−1)S+K−2padding

至此, Conv2D和Conv2DTranspose 在输入和输出形状方面互为倒数。

关于步幅:
说明: 仅做一般性说明,非严格计算,此部分不理解可以跳过,回头再看。

  1. 正常卷积(大图变小图)情况下:
    输入(5,5),步幅(2,2),输出(3,3)
  2. 逆卷积操作中,
    小图变大图,输入(3,3)输出(5,5)


强调:
逆卷积Conv2DTranspose中有步幅这一个参数,具体来说应该是卷积(大图变小图)的步幅,即有(5,5)到(3,3)的步幅,逆卷积操作的步幅永远为1。
逆卷积Conv2DTranspose中有步幅这一个参数,具体来说应该是卷积(大图变小图)的步幅,即有(5,5)到(3,3)的步幅,逆卷积操作的步幅永远为1。
逆卷积Conv2DTranspose中有步幅这一个参数,具体来说应该是卷积(大图变小图)的步幅,即有(5,5)到(3,3)的步幅,逆卷积操作的步幅永远为1。


其中有两个步幅的概念!

  • Conv2DTranspose中的参数步幅实际是大图变小图的步幅。
  • 上面第三步的步幅始终为1。

1.2.2 案例练习

1.2.2.1 当步幅stride=1

(1) 卷积

输入特征图(蓝色):(Hin,Wout)=(4,4)
卷积核:K=3,stride(S) = 1,padding=0
输出特征图(绿色):(Hout,Wout)=(2,2)


代入1.1中,输出特征图为:
Hout=4−3+2∗01+1=2Hout = \frac{4-3+2*0}{1}+1=2 Hout=14−3+2∗0​+1=2


(2) 逆卷积

输入特征图(蓝色):(2,2)
卷积核:K=3,stride(S)=1, padding=0
输出特征图(绿色):(4,4)


说明: 上图中的padding是Conv2DTranspose 经过三步变换以后的padding


  • 代入1.2 公式中,

Hout=(Hin−1)∗S−2p+kHout = ( Hin -1)*S- 2p+k Hout=(Hin−1)∗S−2p+k
Hout=(2−1)∗1−2∗0+3=4Hout = ( 2 -1)*1- 2*0+3=4 Hout=(2−1)∗1−2∗0+3=4


  • 分步骤讲解:
  1. 输入特征图变换: 步幅stride=1,输入特征图不变,即:(2,2)
  2. 卷积核变换:
    卷积核不变(3,3)步幅:strdie=1
    padding’ = K-p-1
    即:padding = 3-0-1=2
  3. 卷积

Hout=2+2∗2−31+1=4Hout = \frac{2+2*2-3}{1}+1 =4 Hout=12+2∗2−3​+1=4


说明: 至此,逆卷积的两种方法结果一致。

1.2.2.2 当步幅stride=2

(1) 卷积

输入特征图(蓝色):(Hin,Wout)=(5,5)
卷积核:K=3,stride(S) = 2,padding=1
输出特征图(绿色):(Hout,Wout)=(3,3)


代入1.1中,输出特征图为:
Hout=5−3+2∗12+1=3Hout = \frac{5-3+2*1}{2}+1=3 Hout=25−3+2∗1​+1=3


(2) 逆卷积

输入特征图(蓝色):(3,3)
卷积核:K=3,stride(S)=2, padding=1
输出特征图(绿色):(5,5)


  • 代入1.2 公式中,

Hout=(Hin−1)∗S−2p+kHout = ( Hin -1)*S- 2p+k Hout=(Hin−1)∗S−2p+k
Hout=(3−1)∗2−2∗1+3=5Hout = ( 3 -1)*2- 2*1+3=5 Hout=(3−1)∗2−2∗1+3=5


  • 分步骤讲解:
  1. 输入特征图变换: 步幅stride=2,输入特征图,(3,3)变为:(5,5)
  2. 卷积核变换:
    卷积核不变(3,3)步幅改变: strdie=1
    padding’ = K-p-1
    即:padding = 3-1-1=1
  3. 卷积

Hout=Hin+2p−kS+1Hout = \frac{Hin+2p-k}{S}+1 Hout=SHin+2p−k​+1
Hout=5+2∗1−31+1=5Hout = \frac{5+2*1-3}{1}+1 =5 Hout=15+2∗1−3​+1=5

1.3 小结

  1. 正常卷积,特征图变换:

Hout=Hin−k+2pS+1Hout = \frac{Hin-k+2p}{S}+1 Hout=SHin−k+2p​+1

  1. 逆卷积,特征图变换

Hout=(Hin−1)∗S+k−2pHout = (Hin-1)*S+k-2p Hout=(Hin−1)∗S+k−2p

  1. 卷积和逆卷积特征图变换互为倒数
  2. 逆卷积(小图变大图,(3,3)到(5,5)),中参数步幅,是(大图变小图,(5,5)到(3,3))的步幅。
  3. 逆卷积进行卷积操作(前文提到第三步)中的步幅为1。

参考文献

[1] https://www.cnblogs.com/wanghui-garcia/p/10791328.html
[2] https://blog.csdn.net/chen772209/article/details/94998157
[3] https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2DTranspose
[4] https://zhuanlan.zhihu.com/p/31988761
[5] https://blog.csdn.net/qq_27261889/article/details/86304061/

【keras/Tensorflow/pytorch】Conv2D和Conv2DTranspose详解相关推荐

  1. Pytorch的nn.Conv2d()详解

    Pytorch的nn.Conv2d()详解 nn.Conv2d()的使用.形参与隐藏的权重参数 in_channels out_channels kernel_size stride = 1 padd ...

  2. Tensorflow 2.x(keras)源码详解之第十二章:keras中的损失函数之BinaryCrossentropy详解

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  3. Win10 TensorFlow(gpu)安装详解

    Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...

  4. 【前沿】何恺明大神ICCV2017最佳论文Mask R-CNN的Keras/TensorFlow/Pytorch 代码实现

    我们提出了一个概念上简单.灵活和通用的用于目标实例分割(object instance segmentation)的框架.我们的方法能够有效地检测图像中的目标,同时还能为每个实例生成一个高质量的分割掩 ...

  5. TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,

    TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344  作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...

  6. Tensorflow 2.x源码详解之开宗明义:基本介绍和张量(万文多图)

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  7. Tensorflow 2.x源码详解之第三章:导数(梯度/GradientTape)

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  8. 【小白学PyTorch】12.SENet详解及PyTorch实现

    <<小白学PyTorch>> 小白学PyTorch | 11 MobileNet详解及PyTorch实现 小白学PyTorch | 10 pytorch常见运算详解 小白学Py ...

  9. 【小白学PyTorch】11.MobileNet详解及PyTorch实现

    <<小白学PyTorch>> 小白学PyTorch | 10 pytorch常见运算详解 小白学PyTorch | 9 tensor数据结构与存储结构 小白学PyTorch | ...

  10. TensorFlow Wide And Deep 模型详解与应用

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...

最新文章

  1. 运用大数据破局“大城市病”有效支撑首都人口疏解
  2. Java-Runoob-高级教程-实例-字符串:13. Java 实例 - 字符串格式化
  3. MySQL数据库的性能优化总结
  4. java类使用其他类的变量_如何将java类中的变量加载到其他类
  5. 高级软件工程师的职责范围
  6. 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:4不能在第三位,3与5不能相连。...
  7. 提权命令_利用Linux文本操作命令ed进行提权
  8. 音视频开发(42)---H.264 SVC 简介
  9. flag push tcp 作用_TCP协议超详细解析及攻击/防范
  10. CYQ.Data V4.5.5 版本发布[顺带开源Emit编写的快速反射转实体类FastToT类]
  11. [渝粤教育] 中国地质大学 数据结构 复习题
  12. 【Netty-进阶】学习笔记
  13. Python3.9.10标准库与语言参考等文档下载
  14. safari浏览网页打开速度很慢如何解决
  15. 找出m到n水仙花数c语言程序设计,《C语言课程设计输出水仙花数》.doc
  16. canvas多彩粒子星空背景
  17. 网络协议之socket协议详解之Unix domain Socket
  18. python实现刷问卷星份数(面向对象)
  19. 2016年(第15届)中国软件业务收入前百家企业名单(zz)
  20. 数据结构之:时间复杂度(T(n)=O(n))

热门文章

  1. JAVAWeb项目 微型商城项目-------(六)管理员登录
  2. 吉大计算机学院周柚,周柚
  3. 小明刚刚看完电影《第39级台阶》离开电影院的时候,他数了一下礼堂前的台阶,刚好是39级 站在台阶前,他突然又想到了一个问题 如果我每步只能迈上一个或者两个台阶,先迈左脚,然后左右交替,也就是说一共
  4. 耳机使用说明书 jbl ua_JBL UA联名款,全新一代真无线运动耳机“UA小黑盒”今日天猫首发...
  5. linux tcp 缓冲区 参数,Linux TCP 缓冲区参数调优
  6. c事件和委托的区别_web前端教程分享JavaScript学习笔记之Event事件二
  7. linux mmu的实现的讲解_Linux_MMU
  8. Git:解决Git向码云中push文件报错:! [rejected] master -> master (fetch first)
  9. 面板x轴模式包括哪些_虎扑轻跃 | 体验一汽大众探岳X
  10. 随手记_英语_学术写作_常用句型35个