Pytorch中膨胀卷积的用法详解
作者:DL&ML 时间:2023-03-26 12:03:25
卷积和膨胀卷积
在深度学习中,我们会碰到卷积的概念,我们知道卷积简单来理解就是累乘和累加,普通的卷积我们在此不做赘述,大家可以翻看相关书籍很好的理解。
最近在做项目过程中,碰到Pytorch中使用膨胀卷积的情况,想要的输入输出是图像经过四层膨胀卷积后图像的宽高尺寸不发生变化。
开始我的思路是padding='SAME'结合strides=1来实现输入输出尺寸不变,试列好多次还是有问题,报了张量错误的提示,想了好久也没找到解决方法,上网搜了下,有些人的博客说经过膨胀卷积之后图像的尺寸不发生变化,有些人又说发生变化,甚至还给出了公式,按着他们的方法修改后还是有问题,报的错误还是没有变。一时不知道怎样解决,网上关于膨胀卷积输出尺寸的大小相关的知识也很少。
终于......,经过自己的研究,发现了问题所在。好啦!我们先从膨胀卷积的概念开始。
1、膨胀卷积的概念
Dilated Convolutions,翻译为扩张卷积或空洞卷积。扩张卷积与普通的卷积相比,除了卷积核的大小以外,还有一个扩张率(dilation rate)参数,主要用来表示扩张的大小。扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,在神经网络中即参数数量不变,区别在于扩张卷积具有更大的感受野。感受野是卷积核在图像上看到的大小,例如5x5的卷积核的感受野大小为25。
2、示意图
a.普通卷积,dilation=1,感受野为3x3=9
b.膨胀卷积,dilation=2,感受野为7x7=49
c.膨胀卷积,dilation=4,感受野为16x16 = 256
3、感受野的概念
在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小
重点来啦
卷积核经过膨胀后实际参与运算的卷积大小计算公式:
膨胀后的卷积核尺寸 = 膨胀系数 × (原始卷积核尺寸-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、应用领域
图像修复,图像分割,语音合成。
来源:https://blog.csdn.net/qq_21230831/article/details/89193439
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
linux系统中重置mysql的root密码
![](https://img.aspxhome.com/file/2023/3/99483_0s.jpg)
关于浏览器地址栏的小图标favicon.ico制作
python OpenCV学习笔记实现二维直方图
![](https://img.aspxhome.com/file/2023/3/87963_0s.jpg)
MySql忘记密码修改方式适应5.7以上版本
python实现二分查找算法
keras的load_model实现加载含有参数的自定义模型
![](https://img.aspxhome.com/file/2023/3/92133_0s.jpg)
MySQL下海量数据的迁移步骤分享
Python pickle模块常用方法代码实例
一文了解Hive是什么
![](https://img.aspxhome.com/file/2023/4/132494_0s.png)
Django框架配置mysql数据库实现过程
![](https://img.aspxhome.com/file/2023/8/76798_0s.png)
PHP文件运行步骤以及数据库的连接代码
php中ob_flush函数和flush函数用法分析
window安装mysql(zip、noinstall)
JS弹出可拖拽可关闭的div层完整实例
PyQt5按下按键选择文件夹并显示的实现
![](https://img.aspxhome.com/file/2023/7/110207_0s.gif)
JS加载器如何动态加载外部js文件
![](https://img.aspxhome.com/file/2023/1/137021_0s.png)
讲解数据库加密技术的功能特性与实现方法
python request 模块详细介绍
![](https://img.aspxhome.com/file/2023/7/80827_0s.png)
PHP保留两位小数的几种方法
Python3安装pip工具的详细步骤
![](https://img.aspxhome.com/file/2023/3/72923_0s.png)