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 pass 语句使用示例
Mar 11 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Python TestCase中的断言方法介绍
May 02 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python colormap库的安装和使用详情
2020/10/06 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
生产车间标语
2014/06/11 职场文书
自主招生自荐信范文
2015/03/04 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书