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将html转成PDF的实现代码(包含中文)
Mar 04 Python
用python读写excel的方法
Nov 18 Python
Python内建模块struct实例详解
Feb 02 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
numpy基础教程之np.linalg
Feb 12 Python
详解Python字典的操作
Mar 04 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
Python hashlib模块实例使用详解
Dec 24 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
parser.add_argument中的action使用
Apr 20 Python
Django执行源生mysql语句实现过程解析
Nov 12 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新浪微博登录接口用法实例
2014/12/23 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
jQuery消息提示框插件Tipso
2015/05/04 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
JS删除String里某个字符的方法
2021/01/06 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
跟老齐学Python之正规地说一句话
2014/09/28 Python
分析python请求数据
2018/08/19 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
Python中format()格式输出全解
2019/04/12 Python
基于Django统计博客文章阅读量
2019/10/29 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
一套Delphi的笔试题二
2013/05/11 面试题
军神教学反思
2014/02/04 职场文书
爽歪歪广告词
2014/03/20 职场文书
应届大学生求职信
2014/07/20 职场文书
个人剖析材料范文
2014/09/30 职场文书
初中重阳节活动总结
2015/05/05 职场文书
销售合作意向书范本
2015/05/08 职场文书
英语导游欢迎词
2015/09/30 职场文书