卷积神经网络(CNN,ConvNet)及其原理详解_第1页
卷积神经网络(CNN,ConvNet)及其原理详解_第2页
卷积神经网络(CNN,ConvNet)及其原理详解_第3页
卷积神经网络(CNN,ConvNet)及其原理详解_第4页
卷积神经网络(CNN,ConvNet)及其原理详解_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

卷积神经网络(CNN,ConvNet)及其原理详解卷积神经网络(CNN,有时被称为ConvNet)是很吸引人的。在短时间内,它们变成了一种颠覆性的技术,打破了从文本、视频到语音等多个领域所有最先进的算法,远远超出了其最初在图像处理的应用范围。CNN由许多神经网络层组成。卷积和池化这两种不同类型的层通常是交替的。网络中每个滤波器的深度从左到右增加。最后通常由一个或多个全连接的层组成:tmapsiOutput图1卷积神经网络的一个例子Fully強nn滤波器的深度从左到右增加。最后通常由一个或多个全连接的层组成:tmapsiOutput图1卷积神经网络的一个例子Fully強nn啓侖dCcsnvoluiiiemSulbSBiTiplli怕Foaluromapsf.nmopsConvnets背后有三个关键动机:局部感受野、共享权重和池化。让我们一起看一下。局部感受野如果想保留图像中的空间信息,那么用像素矩阵表示每个图像是很方便的。然后,编码局部结构的简单方法是将相邻输入神经元的子矩阵连接成属于下一层的单隐藏层神经元。这个单隐藏层神经元代表一个局部感受野。请注意,此操作名为"卷积”,此类网络也因此而得名。当然,可以通过重叠的子矩阵来编码更多的信息。例如,假设每个子矩阵的大小是5x5,并且将这些子矩阵应用到28x28像素的MNIST图像。然后,就能够在下一隐藏层中生成23x23的局部感受野。事实上,在触及图像的边界之前,只需要滑动子矩阵23个位置。定义从一层到另一层的特征图。当然可以有多个独立从每个隐藏层学习的特征映射。例如,可以从28x28输入神经元开始处理MNIST图像,然后(还是以5x5的步幅)在下一个隐藏层中得到每个大小为23x23的神经元的k个特征图。共享权重和偏置假设想要从原始像素表示中获得移除与输入图像中位置信息无关的相同特征的能力。一个简单的直觉就是对隐藏层中的所有神经元使用相同的权重和偏置。通过这种方式,每层将从图像中学习到独立于位置信息的潜在特征。理解卷积的一个简单方法是考虑作用于矩阵的滑动窗函数。在下面的例子中,给定输入矩阵I和核K,得到卷积输出。将3x3核K(有时称为滤波器或特征检测器)与输入矩阵逐元素地相乘以得到输出卷积矩阵中的一个元素。所有其他元素都是通过在I上滑动窗口获得的:KKConvolved11111100011100□11100110011□0101010101434243234图2卷积运算的一个例子:用粗体表示参与计算的单元在这个例子中,一触及I的边界就停止滑动窗口(所以输出是3x3)或者,可以选择用零填充输入(以便输出为5x5),这是有关填充的选择。另一个选择是关于滑窗所采用的滑动方式的步幅。步幅可以是1或大于1大步幅意味着核的应用更少以及更小的输出尺寸,而小步幅产生更多的输出并保留更多的信息。滤波器的大小、步幅和填充类型是超参数,可以在训练网络时进行微调。TensorFlow中的ConvNet在TensorFlow中,如果想添加一个卷积层,可以这样写:tf+nn*conv2d{input,filter,stridesfpaddingfuse_cudrun_on_gpu=None/ormat=NDne,naine=None)参数说明如下:input:张量,必须是half、float32、float64三种类型之一。filter:张量必须具有与输入相同的类型。strides:整数列表。长度是4的一维向量。输入的每一维度的滑动窗口步幅。必须与指定格式维度的顺序相同。padding:可选字符串为SAME、VALID。要使用的填充算法的类型。use_cudnn_on_gpu:—个可选的布尔值,默认为True。data_format:可选字符串为NHWC、NCHW,默认为NHWC。指定输入和输出数据的数据格式。使用默认格式NHWC,数据按照以下顺序存储:[batch,in_height,in_width,in_channels]。或者,格式可以是NCHW,数据存储顺序为:[batch,in_channels,in_height,in_width]。name:操作的名称(可选)卜图提供了一个卷积的例子:假设我们要总结一个特征映射的输出。我们可以使用从单个特征映射产生的输出的空间邻接性,并将子矩阵的值聚合成单个输出值,从而合成地描述与该物理区域相关联的含义。最大池化一个简单而通用的选择是所谓的最大池化算子,它只是输出在区域中观察到的最大输入值。在TensorFlow中,如果想要定义一个大小为2x2的最大池化层,可以这样写:tf.nn.max_po01(valuerksizefStrides,pddding;da.ta_format=1NHWCname=None)参数说明如下:value:形状为[batch,height,width,channels]和类型是tf.float32的四维张量。ksize:长度>=4的整数列表。输入张量的每个维度的窗口大小。

strides:长度>=4的整数列表。输入张量的每个维度的滑动窗口的步幅。padding:—个字符串,可以是VALID或SAME。data_format:—个字符串,支持NHWC和NCHW。name:操作的可选名称。卜图给出了最大池化操作的示例:464667图4池化操作的一个例子ConvNet总结CNN基本上是几层具有非线性激活函数的卷积,以及将池化层应用于卷积的结果。每层应用不同的滤波器(成百上千个)理解的关键是滤波器不是预先设定好的,而是在训练阶段学习的,以使得恰当的损失函数被最小化。已经观察到较低层会学习检测基本特征,而较高层检测更复杂的特征,例如形状或面部。请注意,由于有池化层,靠后的层中的神经元看到的更多的是原始图像,因此它们能够编辑前几层中学习的基本特征。到目前为止,苗述了ConvNet的基本概念。CNN在时间维度上对音频和文本数据进行一维卷积和池化操作,沿(高度x宽度)维度对图像进行二维处理,沿(高度x宽度x时间)维度对视频进行三维处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论