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 sys.path详细介绍
Oct 17 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
python运行其他程序的实现方法
Jul 14 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
python tkinter组件使用详解
Sep 16 Python
django 实现celery动态设置周期任务执行时间
Nov 19 Python
NumPy排序的实现
Jan 21 Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 Python
简单了解python列表和元组的区别
May 14 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 n个不重复的随机数生成代码
2009/06/23 PHP
php实现点击可刷新验证码
2015/11/07 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
js比较和逻辑运算符的介绍
2013/03/10 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
史上最全面的Java面试题汇总!
2015/02/03 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
授权委托书(完整版)
2014/09/10 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
责任书格式
2019/04/18 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技