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字符串匹配算法KMP实例
Jul 18 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
python提取具有某种特定字符串的行数据方法
Dec 11 Python
python实现杨氏矩阵查找
Mar 02 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
python调用自定义函数的实例操作
Jun 26 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
基于Python fminunc 的替代方法
Feb 29 Python
Python request使用方法及问题总结
Apr 26 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
Python 如何解决稀疏矩阵运算
May 26 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/06/25 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
javascript使用location.search的示例
2013/11/05 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python中int()函数的用法浅析
2017/10/17 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python字符串反转的四种方法详解
2019/12/02 Python
Python argparse模块使用方法解析
2020/02/20 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
DBA的职责都有哪些
2012/05/16 面试题
结婚邀请函范文
2014/01/14 职场文书
司仪主持词两篇
2014/03/22 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
活动主持人开场白
2015/05/28 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
详解nginx进程锁的实现
2021/06/14 Servers
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
mysql的Buffer Pool存储及原理
2022/04/02 MySQL