Pytorch中膨胀卷积的用法详解


Posted in Python onJanuary 07, 2020

卷积和膨胀卷积

在深度学习中,我们会碰到卷积的概念,我们知道卷积简单来理解就是累乘和累加,普通的卷积我们在此不做赘述,大家可以翻看相关书籍很好的理解。

最近在做项目过程中,碰到Pytorch中使用膨胀卷积的情况,想要的输入输出是图像经过四层膨胀卷积后图像的宽高尺寸不发生变化。

开始我的思路是padding='SAME'结合strides=1来实现输入输出尺寸不变,试列好多次还是有问题,报了张量错误的提示,想了好久也没找到解决方法,上网搜了下,有些人的博客说经过膨胀卷积之后图像的尺寸不发生变化,有些人又说发生变化,甚至还给出了公式,按着他们的方法修改后还是有问题,报的错误还是没有变。一时不知道怎样解决,网上关于膨胀卷积输出尺寸的大小相关的知识也很少。

终于......,经过自己的研究,发现了问题所在。好啦!我们先从膨胀卷积的概念开始。

1、膨胀卷积的概念

Dilated Convolutions,翻译为扩张卷积或空洞卷积。扩张卷积与普通的卷积相比,除了卷积核的大小以外,还有一个扩张率(dilation rate)参数,主要用来表示扩张的大小。扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,在神经网络中即参数数量不变,区别在于扩张卷积具有更大的感受野。感受野是卷积核在图像上看到的大小,例如5x5的卷积核的感受野大小为25。

2、示意图

Pytorch中膨胀卷积的用法详解

a.普通卷积,dilation=1,感受野为3x3=9

b.膨胀卷积,dilation=2,感受野为7x7=49

c.膨胀卷积,dilation=4,感受野为16x16 = 256

3、感受野的概念

在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小

Pytorch中膨胀卷积的用法详解

重点来啦

卷积核经过膨胀后实际参与运算的卷积大小计算公式:

膨胀后的卷积核尺寸 = 膨胀系数 × (原始卷积核尺寸-1)+ 1

例如对于输入是19 x 19(暂且不考虑图像通道数)大小的图像做膨胀卷积,要使输出的图像大小保持不变,即就是仍然为19 x 19,我们要怎样实现呢?

我们的代码是基于pytorch实现的,它的卷积参数中没有padding='SAME‘的选项,padding的可取值为0,1,2,3等等的值。它的计算方式和tensorflow中的padding='VALID'的计算方式一样。

Output=(W-F+2P)/S+1

我们取strides=1,这里的原始卷积核为3 x 3大小,dilation=6,我们可以计算出膨胀后的卷积核大小为6(3-1)+1=13

带入公式可以求得:

(19-13+2*p)/1+1=19,要使这个式子成立,可以反推出padding=6。

这样一来,就可以使得输入输出的尺寸保持不变。达到了我们想要的效果。

4、膨胀卷积的优点

膨胀卷积在保持参数个数不变的情况下增大了卷积核的感受野

5、应用领域

图像修复,图像分割,语音合成。

以上这篇Pytorch中膨胀卷积的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python生成XML的方法实例
Mar 21 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
Python 单元测试(unittest)的使用小结
Nov 14 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
Django中的AutoField字段使用
May 18 Python
python批量更改目录名/文件名的方法
Apr 18 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 31 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 #Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 #Python
解决torch.autograd.backward中的参数问题
Jan 07 #Python
Pytorch 中retain_graph的用法详解
Jan 07 #Python
PyTorch中的Variable变量详解
Jan 07 #Python
python enumerate内置函数用法总结
Jan 07 #Python
pytorch加载自定义网络权重的实现
Jan 07 #Python
You might like
php 移除数组重复元素的一点说明
2008/11/27 PHP
PHP加密解密函数详解
2015/10/28 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
Yii2如何批量添加数据
2016/05/17 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
asp 取文本框名称代码
2008/12/02 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
处理Python中的URLError异常的方法
2015/04/30 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
给我一面国旗 python帮你实现
2019/09/30 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
介绍一下Ruby的特点
2013/01/20 面试题
师范毕业生自荐信
2013/10/17 职场文书
2014年教师节寄语
2014/04/03 职场文书
雷人标语集锦
2014/06/19 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
2015年预算员工作总结
2015/05/14 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
nginx之queue的具体使用
2022/06/28 Servers