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中如何获取类属性的列表
Dec 26 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
python取代netcat过程分析
Feb 10 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
python 实现倒排索引的方法
Dec 25 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
Oct 14 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
Python调用.net动态库实现过程解析
Jun 05 Python
python代码区分大小写吗
Jun 17 Python
python 如何做一个识别率百分百的OCR
May 29 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判断远程url是否有效的几种方法小结
2011/10/08 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
jquery 防止表单重复提交代码
2010/01/21 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
微信小程序实现点赞业务
2021/02/10 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python实现把回车符\r\n转换成\n
2015/04/23 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
就业意向书范文
2014/04/01 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
图书馆义工感想
2015/08/07 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS