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中的startswith和endswith函数使用实例
Aug 25 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python找出完数的方法
Nov 12 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
使用python turtle画高达
Jan 19 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
利用python进行数据加载
Jun 20 Python
Python使用永中文档转换服务
May 06 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
python交换两个变量的值方法
2019/01/12 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python自动生成证件号的方法示例
2021/01/14 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
公证书样本
2014/04/10 职场文书
什么是就业协议书
2014/04/17 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
学生犯错保证书
2015/05/09 职场文书
开学第一周值周总结
2015/07/16 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
Win11查看设备管理器
2022/04/19 数码科技
处理canvas绘制图片模糊问题
2022/05/11 Javascript