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

编辑: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,一经查实,立即删除!

相关文章

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…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

查看计算机用户修改密码时间,使用ldap语句查询某时间后没改密码的用户

经常使用Active Directory用户和计算机控制台的我们会发现,在左侧控制台树的最上面有一个“保存的查询”,通过新建查询可以看到可以通过图形界面创建一些简单的查询操作。那么我们如果有一些特殊的查询要做要怎么来实现呢。这里我们把《查询某个时间点后…

847方波放大电路_分析运放7大经典电路,有图有真相,详解每个电路原理!

运放的基本分析方法:虚断,虚短。对于不熟悉的运放应用电路,就使用该基本分析方法。运放是用途广泛的器件,接入适当的反馈网络,可用作精密的交流和直流放大器、有源滤波器、振荡器及电压比较器。1,运放在有源…

python实现什么功能_Python 实现WC功能

项目要求 基本要求 -c 统计文件字符数 (实现) -w 统计文件词数 (实现) -l 统计文件行数(实现) 扩展功能 -s 递归处理目录下符合条件得文件(实现) -a 返回文件代码行 / 空行 / 注释行(实现&#…

python数据处理常用函数_Python大数据处理模块Pandas

Pandas使用一个二维的数据结构DataFrame来表示表格式的数据,相比较于Numpy,Pandas可以存储混合的数据结构,同时使用NaN来表示缺失的数据,而不用像Numpy一样要手工处理缺失的数据,并且Pandas使用轴标签来表示行和列 1、…

计算机学院校友论坛,西工大计算机学院北京校友论坛成立并举办第一次活动

2021年5月16日,西北工业大学计算机学院北京校友论坛成立会议暨第一次活动在北京召开,在京计算机学院院友齐聚一堂共同研讨计算机领域新技术、新发展,共叙同窗情,共谋新未来。西北工业大学校友总会办公室副主任刘江、计算机学院院长…

邢台职业技术学院计算机系宿舍,邢台职业技术学院宿舍条件怎么样 男生女生宿舍图片...

大学马上就要开学了,邢台职业技术学院宿舍条件怎么样,有没有独立卫浴和空调,宿舍环境如何,想必是邢台职业技术学院大一新生最想知道的。小编整理了《邢台职业技术学院宿舍条件怎么样男生女生宿舍图片》一文,供大一新生…

常用计算机 启动bios,详解各种电脑开机怎么进入bios设置

开机怎么进入bios呢?电脑品牌上百种,每种品牌又有各种类型,BIOS的类型成百上千,bios设置方法也不计其数。BIOS是整个系统中最神密最难掌握的,开机怎么进入bios?bios设置方法真的是一件伤脑筋的事。针对以上的问题,小…

国服服务器_外服玩家热议LOL国服倒计时插件:说好的公平竞技呢?

对于很多国服的英雄联盟玩家来说,自从多年前各种盒子辅助软件出现之后,玩家就越来越依赖这些辅助工作所提供的便捷,虽说在过去几年间官方已经对这些功能尽量进行了简化以及遏制,但比如打野计时器、水晶计时、眼位监视等等至今仍然…

int转unsigned int_谢劲课题组在基于锰催化的转金属化基元反应取得系列进展

本文来自微信公众号:X-MOLNews用廉价的过渡金属催化剂替代贵金属催化剂是解决未来自然资源问题紧缺的一个很好选择。锰是地壳中含量排第三位的过渡金属,价格便宜,环境危害小。但由于其较低的催化活性,锰催化参与的许多金属有机化学…

pip更换镜像源_Ubuntu20.04LTS更换软件源镜像

我用的是Linux的Windows子系统下的Ubuntu20.04LTS版本,这个版本很重要!首先是备份一下开始的源打开位置/etc/apt/sources.list备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后删除掉sources.listsudo rm /etc/apt/sources.list在目录 …