在搭配深度学习多个卷积层时我们经常要计算卷积层的输出张量的尺寸大小,可以用如下公式计算:

1, 公式

卷积层输出尺寸: o = ⌊(i + 2p - k) / s⌋ + 1
式中,i:输入尺寸;o:输出尺寸;p:padding;k: kernel_size;s: stride。⌊…⌋表示向下取整。

2, 推导过程

  这个公式不用死记,下面我用非常便于理解的方法描述这个推导。卷积就是对相邻的一片数据进行加权求和得到一个数的一种“合并”操作,将此操作对输入张量进行滑动扫描以得到输出张量。循着这个过程,我们很容易推导出卷积输出尺寸的计算公式。
(1)注意padding指的是两边同时补零,所以补零后输入尺寸相当于变成了i+2p;
(2)用卷积核扫描的时候,想象一把尺子在桌子上从左移动到右,受到左右边框的界限,它的移动范围只有i+2p-k大小。
(3)如果每次移动的步长是s,实际上移动的步数就是 (i+2p-k)/s,但移动的步数必须是整数,因为不能出界,如果最后一步哪怕还差一点也不能算,所以必须要向下取整。
(4)即使一步不移动,也会在原位得到一个输出点,所以最后得到的输出尺寸是移动的总步数再加上1。

3, 膨胀卷积

对于膨胀卷积,上公式不变,只需要把卷积核k改为膨胀后的卷积核k’,
膨胀后卷积核: k’ = d × (k-1) + 1
式中,k: 输入的卷积核尺寸; d: 膨胀系数; k’: 膨胀后等效的卷积核尺寸。用k’代入上公式的k,就可以计算出输出尺寸。

4, 反卷积

反卷积就是把卷积的i, o调换就可以了,推导后得到
反卷积输出尺寸: o = (i-1)×s + k - 2p

5, 常用等尺寸变换配置

经常希望经过卷积后张量尺寸不变,常用以下(k, s, p)组合:
(k, s, p) = (1, 1, 0) or (3, 1, 1) or (5, 1, 2) or (7, 1, 3)

对于更多其他情况,我们仍想要保持卷积后尺寸不变,可以用下面的代码autopad自动计算p的值,该代码可用于用单个数字表示的正方形的卷积核或用元组表示的矩形的卷积核。

def autopad(k, p=None):  # kernel, padding# Pad to 'same'if p is None:p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # auto-padreturn p
conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False)

卷积尺寸计算公式(含膨胀卷积和反卷积情况)相关推荐

  1. tensorflow一维卷积输入_深度学习中的反卷积(Transposed Convolution)

    反卷积(Transposed Convolution)是一种图像上采样(UpSample)的方法,在DCGAN中用它来将随机采样的值转换为一张完整的图像. DCGAN生成手写数字.图片来源[5] Tr ...

  2. 【故障诊断】基于最小熵反卷积、最大相关峰度反卷积和最大二阶环平稳盲反卷积等盲反卷积方法在机械故障诊断中的应用研究(Matlab代码实现)

  3. 卷积、空洞卷积、反卷积与空洞反卷积的计算公式(全)

    前言: 经常使用的卷积有卷积.空洞卷积.反卷积与空洞反卷积的,下面总结了他们的计算公式. 一.卷积计算公式 卷积神将网络的计算公式为: N=(W-F+2P)/S+1 其中 N:输出大小 W:输入大小 ...

  4. cnn stride and padding_彻底搞懂CNN中的卷积和反卷积

    前言 卷积和反卷积在CNN中经常被用到,想要彻底搞懂并不是那么容易.本文主要分三个部分来讲解卷积和反卷积,分别包括概念.工作过程.代码示例,其中代码实践部分主结合TensorFlow框架来进行实践.给 ...

  5. 机器学习19:反卷积算法

    机器学习19:反卷积算法(转载和整理) 在整理全卷积网络的过程中,被反卷积的概念困扰很久,于是将反卷积算法单独整理为一篇博客,本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积?中的高票答案. 1. ...

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

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

  7. 反卷积(Transposed Convolution, Fractionally Strided Convolution or Deconvolution)

    反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其 ...

  8. 反卷积在神经网络可视化上的成功应用

    反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其 ...

  9. 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(三)

    ps:最近在做分割在github上找代码看模型时老发现尺度从小到大那部分,有的是采用上采样(双线性插值)+卷积,有的用反卷积.为什么不相同能,我查阅相关资料发现这位知乎大神根据外网大佬文章总结原因.知 ...

最新文章

  1. 二叉树的基本应用知识总结
  2. 三个箭头循环标志_沧州交通标志杆直销
  3. PHP之Smarty简单实现
  4. php 固定人数拼手气_独立统计在线人数和访问数代码分享(php)
  5. leetcode中文版python_Python版LeetCode1.两数之和
  6. 前端MVVM模式及其在Vue和React中的体现
  7. android 去掉顶部状态栏
  8. X86汇编语言从实模式到保护模式06:从1加到100并显示结果
  9. 长虹电视+刷回android,【原创教程】长虹智能电视Q3T手动升级and刷机救砖教程
  10. 中国第一代技术网红,阿里云P10技术专家褚霸:我只是一个程序员 。
  11. 淘宝店铺上传成人用品类宝贝的错误解决
  12. 匿名发送邮件python_邮箱伪造之搭建匿名SMTP服务器
  13. ARTS-17(富爸爸穷爸爸)
  14. gb2818的学习第一课
  15. Spring Cloud Eureka 配置文件说明
  16. Mac安装mactex清华源
  17. bC技术绑定10讲②解读“bC双码关联”!
  18. rancher导入集群时证书报错
  19. 基于51单片机的WIFI模块的简单通信
  20. ES6和Nodejs面试题

热门文章

  1. 转载【酷 壳 – COOLSHELL--技术人员的发展之路】
  2. 卷积神经网络中二维卷积核与三维卷积核有什么区别?
  3. linux系统下的ps指令详解
  4. 调用Web Service实现天气预报
  5. dovecot mysql_dovecot+mysql认证问题
  6. 免费API接口源码,api接口调用程序
  7. 杨校老师课堂之云计算私有云OpenStack框架快速搭建
  8. 产业|国内机器人减速器的市场现状及差距分析
  9. centos7 docker安装和使用
  10. android 布局dock,Android电源管理专题之获取和监测Dock状态和类型