Pytorch中膨胀卷积的用法详解

 更新时间:2020-01-07 22:11:26   作者:佚名   我要评论(0)

卷积和膨胀卷积
在深度学习中,我们会碰到卷积的概念,我们知道卷积简单来理解就是累乘和累加,普通的卷积我们在此不做赘述,大家可以翻看相关书籍很好的理解。
最近

卷积和膨胀卷积

果博东方在深度学习中,我们会碰到卷积的概念,我们知道卷积简单来理解就是累乘和累加,普通的卷积我们在此不做赘述,大家可以翻看相关书籍很好的理解。

最近在做项目过程中,碰到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、应用领域

图像修复,图像分割,语音合成。

以上这篇Pytorch中膨胀卷积的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • Pytorch之卷积层的使用详解
  • PyTorch中反卷积的用法详解
  • 在Pytorch中计算卷积方法的区别详解(conv2d的区别)
  • pytorch中的卷积和池化计算方式详解
  • pytorch 自定义卷积核进行卷积操作方式
  • Pytorch实现各种2d卷积示例

果博东方相关的文章

  • Pytorch中膨胀卷积的用法详解

    Pytorch中膨胀卷积的用法详解

    卷积和膨胀卷积在深度学习中,我们会碰到卷积的概念,我们知道卷积简单来理解就是累乘和累加,普通的卷积我们在此不做赘述,大家可以翻看相关书籍很好的理解。最近
    2020-01-07
  • PyTorch 普通卷积和空洞卷积实例

    PyTorch 普通卷积和空洞卷积实例

    如下所示:import numpy as npfrom torchvision.transforms import Compose, ToTensorfrom torch import nnimport torch.nn.init as initdef transform():
    2020-01-07
  • Spring基于xml文件配置Bean过程详解

    Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下通过全
    2020-01-07
  • PHP字符串与数组处理函数用法小结

    PHP字符串与数组处理函数用法小结

    本文实例讲述了PHP字符串与数组处理函数用法。分享给大家供大家参考,具体如下:字符串处理函数trim --去除字符串首尾的多余空白字符和其他字符函数结构:str
    2020-01-07
  • 解决vue elementUI中table里数字、字母、中文混合排序问题

    解决vue elementUI中table里数字、字母、中文混合排序问题

    1.使用场景使用elementUI中的table时,给包含数字字母中文的名称等字段排序例如:数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z)2.代码解
    2020-01-07
  • 安装win10+黑苹果双系统零基础教程(图文)

    安装win10+黑苹果双系统零基础教程(图文)

    一、准备工作准备8g以上的U盘安装TransMac 下载地址:http://www.jb51.net/softs/596307.html安装Hasleo EasyUEFI 下载地址:http://www.jb51.net/softs/52710
    2020-01-07
  • Pytorch 神经网络—自定义数据集上实现教程

    Pytorch 神经网络—自定义数据集上实现教程

    第一步、导入需要的包import osimport scipy.io as sioimport numpy as npimport torchimport torch.nn as nnimport torch.backends.cudnn as cudnnimport
    2020-01-07
  • Matplotlib绘制雷达图和三维图的示例代码

    Matplotlib绘制雷达图和三维图的示例代码

    1.雷达图程序示例'''1.空白极坐标图'''import matplotlib.pyplot as plt plt.polar()plt.show() '''2.绘制一个极坐标点'''import numpy as npim
    2020-01-07
  • Mysql8.0使用窗口函数解决排序问题

    Mysql8.0使用窗口函数解决排序问题

    MySQL窗口函数简介MySQL从8.0开始支持窗口函数,这个功能在大多商业数据库和部分开源数据库中早已支持,有的也叫分析函数。什么叫窗口?窗口的概念非常重要,
    2020-01-07
  • 浅谈Python访问MySQL的正确姿势

    浅谈Python访问MySQL的正确姿势

    Py2 时代,访问 MySQL 数据库的模块除了 PyMySQL 和 MySQL-python 之外,还有以速度见长的 Umysql,以及非常小众的 Oursql 模块。进入了 Py3 时代之后,PyMySQL 与时
    2020-01-07

最新评论