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装饰器 免去调用父类构造函数的麻烦
May 18 Python
Python实现的数据结构与算法之队列详解
Apr 22 Python
Python获取邮件地址的方法
Jul 10 Python
python Crypto模块的安装与使用方法
Dec 21 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
python 列表降维的实例讲解
Jun 28 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python爬取盘搜的有效链接实现代码
Jul 20 Python
解决python对齐错误的方法
Jul 16 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
PHP中捕获超时事件的方法实例
2015/02/12 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JS原型链怎么理解
2016/06/27 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python开发之thread实现布朗运动的方法
2015/11/11 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Python3 合并二叉树的实现
2019/09/30 Python
python 实现二维列表转置
2019/12/02 Python
python 读取数据库并绘图的实例
2019/12/03 Python
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
项目副经理岗位职责
2013/12/30 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
家长寄语大全
2014/04/02 职场文书
安全教育月活动总结
2014/05/05 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang