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中的多重继承
Apr 28 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python构建深度神经网络(DNN)
Mar 10 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
linux下python中文乱码解决方案详解
Aug 28 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Python执行时间的几种计算方法
Jul 31 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 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中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
numpy.random模块用法总结
2019/05/27 Python
10款最好的Python开发编辑器
2019/07/03 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
EJB3推出JPA的原因
2013/10/16 面试题
专业毕业生个性的自我评价
2013/10/03 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
小学生秋游活动方案
2014/02/23 职场文书
迎国庆演讲稿
2014/09/15 职场文书
经理助理岗位职责
2015/02/02 职场文书
工程催款通知书
2015/04/17 职场文书
同事欢送会致辞
2015/07/31 职场文书
详细介绍python类及类的用法
2021/05/31 Python
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
Linux中如何安装并部署Redis
2022/04/18 Servers