请概述可视化卷积神经网络的中间输出的基本思想。_最详细的卷积神经网络入门指南!...

编辑:murufeng
Date:2020-05-15
来源:深度学习技术前沿微信公众号
链接:干货|最全面的卷积神经网络入门教程

卷积神经网络

简介

卷积网络 (convolutional network)(LeCun, 1989),也叫做卷积神经网络 (convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积神经网络主要包括:输入层(Input layer)、卷积层(convolution layer)、激活层(activation layer)、池化层(poling layer)、全连接层(full-connected layer)、输出层(output layer)。

fdedc55f6f792af58c58c87e638c5ce2.png

本篇博文我们主要描述卷积神经网络中卷积层和池化层的工作原理,并解释填充、步幅、输入通道和输出通道的含义和卷积过程中的的参数计算公式。

卷积层

卷积层的组成:一个卷积层的配置通常由以下四个参数确定。

  1. 滤波器(filter)个数。卷积层中的权值通常会被称为滤波器(filter)或卷积核。使用一个滤波器对输入进行卷积会得到一个二维的特征图(feature map)。使用多个滤波器同时对输入进行卷积,便可以得到多个特征图。
  2. 感受野(receptive field) F,即滤波器空间局部连接大小,比如3 * 3,5 * 5,7 * 7。
  3. 零填补(zero-padding) P。随着卷积的进行,图像大小将缩小,图像边缘的信息将逐渐丢失。因此,在卷积前,我们在图像上下左右填补一些0,使得我们可以控制输出特征图的大小。
  4. 步长(stride) S。滤波器在输入每移动S个位置计算一个输出神经元。

卷积的特点:

卷积具有局部连接、参数共享这两大特征。

  • 局部连接便是指每个输出通过权值(weight)和所有输入相连。在卷积层中,每个输出神经元在通道方向保持全连接,而在空间方向上只和一小部分输入神经元相连。
  • 参数共享(parameter sharing)是指在一个模型的多个函数中使用相同的参数。
    如果一组权值可以在图像中某个区域提取出有效的表示,那么它们也能在图像的另外区域中提取出有效的表示。也就是说,如果一个模式(pattern)出现在图像中的某个区域,那么它们也可以出现在图像中的其他任何区域。因此,卷积层不同空间位置的神经元共享权值,用于发现图像中不同空间位置的模式。共享参数是深度学习一个重要的思想,其在减少网络参数的同时仍然能保持很高的网络容量(capacity)。卷积层在空间方向共享参数,而循环神经网络(recurrent neural networks)在时间方向共享参数。

e526d236d837a75b9be75b493407ed26.png

卷积过程实质上就是卷积核中的所有权重与其在输入图像上对应元素数值之和。

卷积过程实例展示:

  1. 首先我们介绍一下最常见的二维卷积层。它有高和宽两个空间维度,常用来处理图像数据。
    在二维卷积层中,一个二维输入数组和一个二维核(kernel)数组通过互相关运算输出一个二维数组。 我们用一个具体例子来解释二维互相关运算的含义。如图1所示,输入是一个高和宽均为3的二维数组。我们将该数组的形状记为 3×3 或(3,3)。核数组的高和宽分别为2。该数组在卷积计算中又称卷积核或过滤器(filter)。卷积核窗口(又称卷积窗口)的形状取决于卷积核的高和宽,即 2×2 。图1中的阴影部分为第一个输出元素及其计算所使用的输入和核数组元素: 0×0+1×1+3×2+4×3=19 。

5d8c61749707a467ae23265797abc8b4.png
图1:二维互相关运算
  1. 对于多通道数据输入和多通道数据输出时
    相对于简单的二维卷积,此时增加了通道维的信息,为了与下文中的卷积计算公式保持一致,我们记为D1。
    图2展示了含2个输入通道的二维互相关计算的例子。在每个通道上,二维输入数组与二维核数组做互相关运算,再按通道相加即得到输出。图2中阴影部分为第一个输出元素及其计算所使用的输入和核数组元素: (1×1+2×2+4×3+5×4)+(0×0+1×1+3×2+4×3)=56 。

1c28621e81dbed8529d6e5255b6a5ce0.png
图2:含2个输入通道的互相关计算

对于多通道输入和经过多个卷积核操作之后,输出特征图可视化如下所示:

eb8f089c3016d060d424e2b476b72e26.png

卷积中的填充与步幅

假设输入形状是 nh×nw ,卷积核窗口形状是 kh×kw ,那么输出形状将会是(nh−kh+1)×(nw−kw+1).

  • 填充(padding) 是指在输入高和宽的两侧填充元素(通常是0元素)。图3里我们在原输入高和宽的两侧分别添加了值为0的元素,使得输入高和宽从3变成了5,并导致输出高和宽由2增加到4。图3中的阴影部分为第一个输出元素及其计算所使用的输入和核数组元素: 0×0+0×1+0×2+0×3=0 。

0aacdff7606d0fd1f5b68834eeacd56a.png
图3: 在输入的高和宽两侧分别填充了0元素的二维互相关计算

一般来说,如果在高的两侧一共填充 ph行,在宽的两侧一共填充 pw 列,那么输出形状将会是(nh−kh+ph+1)×(nw−kw+pw+1).

也就是说,输出的高和宽会分别增加 ph 和 pw

在很多情况下,我们会设置 ph=kh−1 和 pw=kw−1 来使输入和输出具有相同的高和宽。这样会方便在构造网络时推测每个层的输出形状。假设这里 kh 是奇数,我们会在高的两侧分别填充 ph/2 行。如果 kh 是偶数,一种可能是在输入的顶端一侧填充 ⌈ph/2⌉ 行,而在底端一侧填充 ⌊ph/2⌋ 行。在宽的两侧填充同理。

卷积神经网络经常使用奇数高和宽的卷积核,如1、3、5和7,所以两端上的填充个数相等。对任意的二维数组X,设它的第i行第j列的元素为X[i,j]。当两端上的填充个数相等,并使输入和输出具有相同的高和宽时,我们就知道输出Y[i,j]是由输入以X[i,j]为中心的窗口同卷积核进行互相关计算得到的。

步幅(stride):卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。我们将每次滑动的行数和列数称为步幅(stride)。

图4展示了在高上步幅为3、在宽上步幅为2的二维互相关运算。可以看到,输出第一列第二个元素时,卷积窗口向下滑动了3行,而在输出第一行第二个元素时卷积窗口向右滑动了2列。当卷积窗口在输入上再向右滑动2列时,由于输入元素无法填满窗口,无结果输出。图4中的阴影部分为输出元素及其计算所使用的输入和核数组元素: 0×0+0×1+1×2+2×3=8 、 0×0+6×1+0×2+0×3=6 。

b894b9083d00cf490ac5bb3dd40120f0.png
图4:高和宽上步幅分别为3和2的二维互相关运算

一般来说,当高上步幅为 sh ,宽上步幅为 sw 时,输出形状为⌊(nh−kh+ph+sh)/sh⌋×⌊(nw−kw+pw+sw)/sw⌋.

如果设置 ph=kh−1 和 pw=kw−1 ,那么输出形状将简化为 ⌊(nh+sh−1)/sh⌋×⌊(nw+sw−1)/sw⌋ 。更进一步,如果输入的高和宽能分别被高和宽上的步幅整除,那么输出形状将是 (nh/sh)×(nw/sw) 。

卷积中的计算公式

卷积过程中多通道输入与输出的大小关系:
其中W1代表输入图片宽度,H1代表输入图片高度,D1代表输入通道维数,K代表滤波器的个数,F代表感受野的大小(滤波器的大小,这里默认滤波器的高和宽都是一样的),S代表步幅,P代表填充,W2代表输出图片宽度,H2代表输出图片高度,D2代表输出通道维数·

be4e0f53d9ec9933a902696919575d89.png

池化层

池化层的提出主要是为了缓解卷积层对位置的过度敏感性。池化层中的池化函数通过使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出
根据特征图上的局部统计信息进行下采样,在保留有用信息的同时减少特征图的大小。和卷积层不同的是,池化层不包含需要学习的参数。即在池化层中参数量不发生变化。最大池化(max pooling)函数给出相邻矩形区域内的最大值作为输出,平均池化(average pooling)函数给出相邻矩形区域内的均值作为输出。

bfe26d324752b38a9b7df800fec319aa.png

池化层主要有以下三点作用:

  1. 增加特征平移不变性。汇合可以提高网络对微小位移的容忍能力。
  2. 减小特征图大小。汇合层对空间局部区域进行下采样,使下一层需要的参数量和计算量减少,并降低过拟合风险。
  3. 最大汇合可以带来非线性。这是目前最大汇合更常用的原因之一。

池化层中的填充和步幅机制与卷积层一致,值得注意的是:在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等。

池化层中的计算公式

池化过程中多通道输入与输出的大小关系:

其中W1代表输入图片宽度,H1代表输入图片高度,D1代表输入通道维数,F代表感受野的大小(池化滤波器的大小,这里默认滤波器的高和宽都是一样的),S代表步幅,W2代表输出图片宽度,H2代表输出图片高度,D2代表输出通道维数·

850e9d03da2875f32c7a4643fad6ed20.png

参考链接:

卷积神经网络 - 《动手学深度学习》 文档

张皓:(二)计算机视觉四大基本任务(分类、定位、检测、分割)

轻墨:卷积神经网络如何可视化?卷积层到底学到了什么?一起看看大名鼎鼎的ZFNet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java类与对象实验报告心得体会_Java类与对象实验报告.doc

西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 类与对象专业名称: 计算机科学与技术班 级: 计科1405班学生姓名: 高宏伟学 号: 指导教师: 刘霞林实验日期: 2016.9.29一、实验目的通过编程…

linux date fmt,date_format(date,frm) 详解

DATE_FORMAT(date,format)Formats the datevalue according tothe format string.The following specifiers may be used in theformat string. The“%”character is requiredbefore format specifier characters.SpecifierDescription%aAbbreviated weekday name(Sun..Sat)%b…

python numpy和pandas库的区别_python – 来自熊猫和numpy的意思不同

简洁版本: 之所以不同,是因为在调用平均操作时,pandas会使用瓶颈(如果已安装),而不是仅仅依赖于numpy.据推测,瓶颈似乎比numpy更快(至少在我的机器上),但代价是精确度.它们碰巧匹配64位版本,但32位不同(这是有趣的部分). 长版: 通过检查这些模块的源代码…

python实现数据恢复软件_pyinstaller还原python代码过程图解

这篇文章主要介绍了pyinstaller还原python代码过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下pyinstaller 的作用就是将python打包成对应平台的可执行文件。一般这种可执行文件的体积都比较大。我们可以…

android 截图 listview,Android屏幕及view的截图实例详解

Android屏幕及view的截图实例详解屏幕可见区域的截图整个屏幕截图的话可以用View view getWindow().getDecorView();public static Bitmap getNormalViewScreenshot(View view) {view.setDrawingCacheEnabled(true);view.buildDrawingCache();return view.getDrawingCache();}…

python指定位置写入文件_Python从文件中读取指定的行以及在文件指定位置写入

Python从文件中读取指定的行以及在文件指定位置写入 Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 : This is line 1. This is line 2. This is l…

华硕 x86 android,【华硕X79评测】学不会不收费 几步教你安装Android x86-中关村在线...

安装Android x86其实并不困难【中关村在线】华硕X79评测: 话说最近操作系统这个话题非常火爆。也许是借助于Windows 8消费者预览版的光芒,凡是与系统搭边的东西大家好像都喜欢与Windows 8进行比较。介于现在可以使用的系统众多,其中Android x…

r矢量球坐标系旋度_矢量与场论 | 场论

场的概念 | 方向导数与梯度 | 通量与散度 | 环量与旋度 | 典型矢量场 | 哈密顿算子场的概念1.场:如果在全部空间或部分空间里的每一点,都对应着某个物理量的一个确定的值,即在这个空间里确定了该物理量的一个场。(数量场/矢量场 、…

springboot用户管理系统_Springboot优秀开源项目

前言 作为一个开发人员来说,快速的熟悉一项技术就是去使用它.伟大的作家鲁迅先生曾说过:看别人视频不如自己敲代码!作为一个菜鸡开发,我平时也致力于收集各种大神的开源项目!接下来就给大家带来我绞尽乳汁为大家搜罗的几个开源的好项目吧!1. 基于springboot Vue 的人事管理系统…

转换背景色 html,html – CSS转换:淡化背景颜色,重置后

我有一个div列表,并允许我的用户通过发布新的内容动态添加一个新的。如果用户发布新内容,我想通过将新div的背景颜色淡化为另一种颜色,并将其淡出,从而在屏幕上突出显示。我很亲近我正在使用这个CSS来触发转换:.backgr…

第一次失效_又到审核季,内审员们,咱如何开好第一次会议?

导读作为一名企业的内审员,展开工作将从第一次会议开始,那么如何组织好第一次会议将是十分关键的,今天小编特地跟大家一起分享下首次会议召开的案例,手把手教你怎么成功召开首次会议:首次会议由审核组长主持。01 签到与…

python判断字符_Python判断字符串是否为字母或者数字(浮点数)

str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() 所有字符都是空白字符、t、n、r 检查字符串是数字/浮点数方法 float部分 >> float(Nan) nan >> float(Nan) nan >…

疯狂动物消消乐html5游戏在线玩,疯狂动物消消乐免费

疯狂动物消消乐免费版这是一个移动端休闲益智手游,疯狂动物消消乐免费版主打消除了玩法,在疯狂动物消消乐免费版游戏当中玩家要经过种种形式移动游戏当中元素来到达相同种类消除了成功的目的。游戏介绍疯狂动物消消乐一款休闲类的消除游戏,全…

windows便签快捷键_win10电脑有哪些常用的快捷键?

十年八年都不怎么用的快捷键这里就不讲啦,全是常用的,而且用熟了之后你的电脑水平就会变高,至少别人看来是这样的啦♪(^∇^*)。windows键P键:打开小娜,可搜问题,可聊天,可语音调戏。小娜windows…

四川计算机专业大专哪所好,四川省计算机多媒体技术好的大专学校哪好

四川省计算机多媒体技术好的大专学校哪好?随着计算机多媒体技术越来越深入的与人们的生活联系在一起,开设计算机多媒体技术专业的学校也是越来越多,报考计算机多媒体技术专业的同学也是一年比一年多,可是计算机多媒体技术好的大专学校有哪些…

python pil_python PIL 图像处理

编辑推荐: 本文来自于jianshu,文章介绍了pil能处理的图片类型,matplotlib标准模式以及图像通道\几何变换\裁剪等相关内容 。 Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的 #Image和skimage读图片import Image as img import os from…

w7电脑蓝屏怎么解决_怎么解决0x0000007b电脑蓝屏 解决0x0000007b电脑蓝屏方法【详细步骤】...

电脑蓝屏死机报错 0x0000007b 是什么情况呢?0x0000007b电脑蓝屏通常情况是硬盘的存储控制器驱动加载错误导致故障。对于这种情况就要有相应解决措施,下面来看看具体解决方法。导致驱动加载错误的情况可能有以下三种情况:1.无法自动识别硬盘控制器&#…

判断二叉树是否是完全二叉树c语言_完全二叉树的节点数,你真的会算吗?

读完本文,你可以去力扣拿下如下题目:222.完全二叉树的节点个数-----------如果让你数一下一棵普通二叉树有多少个节点,这很简单,只要在二叉树的遍历框架上加一点代码就行了。但是,如果给你一棵完全二叉树,让…

怎样用计算机记账,仓管员怎么用电脑记账?简单实用的电脑操作方式一览!

仓库管理中,有很多的流水账需要进行记录,物品的收发,物品的采购等等,传统的仓库管理,多用人工方式等记录,效率相对较低,出现差错率相对较高,如今,多采用软件及电脑等方式…

免密登录关闭_微信最新提醒:这个设置再不关闭,你的微信账号就能被别人“免密登录”!...

哈喽大家好,我是你们的老朋友姗姗,每天与大家分享不一样的生活知识,阅读本文前,请您先点击上面的“姗姗时尚思”,再点击“关注”,这样您就可以继续免费收到文章了,希望可以多鼓励一下小编&#…