创建和训练新的卷积神经网络(ConvNet)的第一步是定义网络结构。本主题解释了ConvNet层的细节,以及它们在ConvNet中出现的顺序。有关深度学习层的完整列表以及如何创建它们,请参见<一个href="//www.tatmou.com/help/deeplearning/ug/list-of-deep-learning-layers.html" class="a">深度学习层名单一个>.要了解序列分类和回归的LSTM网络,请参阅<一个href="//www.tatmou.com/help/deeplearning/ug/long-short-term-memory-networks.html" class="a">长短期内存网络一个>.要了解如何创建自己的自定义图层,请参阅<一个href="//www.tatmou.com/help/deeplearning/ug/define-custom-deep-learning-layers.html" class="a">定义自定义深度学习层一个>.
网络架构可以根据所包含的层的类型和数量而有所不同。所包含的层的类型和数量取决于特定的应用程序或数据。例如,如果您有分类响应,则必须有一个softmax层和一个分类层,而如果您的响应是连续的,则必须在网络的末端有一个回归层。只有一个或两个卷积层的更小的网络可能足以对少量灰度图像数据进行学习。另一方面,对于包含数百万彩色图像的更复杂的数据,您可能需要一个包含多个卷积和完全连接层的更复杂的网络。
要指定具有顺序连接的所有图层的深网络的体系结构,请直接创建一系列图层。例如,要创建一个将28-×28灰度图像分类为10类的深网络,请指定图层数组
图层= [ImageInputLayer([28 28 1])卷积2dlayer(3,16,'填充',1)BatchnormalizationLayer Ruilulayer MaxPooling2Dlayer(2,'),2)卷积2dlayer(3,32,'填充',1)BatchnormalizationLayer Rululayer完全连接覆盖器(10)SoftmaxLayer分类层];
层
是一系列的要指定具有按顺序连接的所有图层的神经网络的体系结构,请直接创建一系列层。要指定图层可以具有多个输入或输出的网络的体系结构,请使用a<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layergraph.html">LayerGraph
对象。
使用图像输入图层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.imageinputlayer.html">imageInputLayer
.
图像输入层将图像输入到网络并应用数据标准化。年代p一个n>
使用该图像尺寸指定图像大小
二维卷积层将滑动卷积滤波器应用于输入。年代p一个n>使用2-D卷积层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.convolution2dlayer.html">convolution2dLayer
.
卷积层由各种组件组成。<年代up class="footnote">[年代p一个n>1一个>]年代p一个n>
卷积层由神经元组成,这些神经元连接到输入图像的子区域或前一层的输出。该层在扫描图像时学习这些区域所定位的特征。当创建一个层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.convolution2dlayer.html">convolution2dLayer
功能,您可以使用该区域指定这些区域的大小
对于每个地区,
此图像显示通过输入的3乘3滤波器扫描。较低的映射表示输入,上映射表示输出。
滤波器移动的步长称为<年代p一个ncl一个年代年代="emphasis">步.您可以使用该步骤规定
该图像显示3×3滤波器通过带有寿司的输入扫描2.下映射表示输入,上部图表示输出。
过滤器中的权重数为h*w*c, 在哪里h是身高,和w是过滤器的宽度,分别为滤波器和c是输入中的通道数。例如,如果输入是彩色图像,则颜色通道的数量为3.滤波器的数量确定卷积层的输出中的信道数。使用该文件指定过滤器的数量
扩展卷积是一种卷积,在这种卷积中,滤波器通过插入元素之间的空格展开。属性指定膨胀系数
使用扩展卷积来增加层的接受域(层可以看到的输入区域),而不增加参数或计算的数量。
该层通过在每个过滤器元素之间插入零来扩展过滤器。膨胀因子决定了对输入采样的步长或等效滤波器的上采样因子。它对应的有效过滤器尺寸为(过滤尺寸- 1)。*扩张因子+ 1。例如,具有扩张因子的3×3过滤器
该图像显示3×3滤波器,其通过输入扫描两倍。较低的映射表示输入,上映射表示输出。
由于滤波器沿输入移动,它使用相同的重量和相同的卷积偏置,形成a<年代p一个ncl一个年代年代="emphasis">特征映射.每个特征图都是使用不同权重集和不同偏差进行卷积的结果。因此,特征图的数量等于过滤器的数量。卷积层的参数总数为((h*w*c+ 1) *数量的过滤器),其中1是偏差。
您还可以将填充垂直和水平应用填充到输入图像边框
此图像显示3×3过滤器通过填充的输入尺寸1.较低的映射表示输入,上部图表示输出。
卷积层的输出高度和宽度是(输入大小- ((过滤尺寸- 1)*扩张因子+ 1)+ 2 *填充/步行+ 1。这个值必须是一个整数,这样整个图像才能被完全覆盖。如果这些选项的组合没有导致图像被完全覆盖,软件默认会忽略图像的右侧和底部边缘的剩余部分。
输出高度和宽度的产物为特征图提供了神经元的总数,例如地图大小.卷积层中的神经元总数(输出大小)为地图大小*数量的过滤器.
例如,假设输入图像是32×32×3彩色图像。对于具有八个滤波器的卷积层和5×5的滤波器尺寸,每个过滤器的权重数为5 * 5 * 3 = 75,并且层中的参数总数为(75 + 1)* 8= 608.如果在每个方向上的步伐是2,则指定大小2的填充,则每个特征图是16-×16。这是因为(32 - 5 + 2 * 2)/ 2 + 1 = 16.5,并且丢弃了图像右侧和底部的一些最外层填充。最后,层中的神经元的总数为16 * 16 * 8 = 2048。
通常,这些神经元产生的结果会经过某种形式的非线性,如线性整流单元(ReLU)。
在定义卷积层时,可以使用名称-值对参数调整该层的学习率和正则化选项。如果您选择不指定这些选项,那么
卷积神经网络可以由一个或多个卷积层组成。卷积层的数量取决于数据的数量和复杂性。
使用批量创建批量归一化层<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.batchnormalizationlayer.html">batchNormalizationLayer
.
批量归一化层独立地将每个通道的所有观察结果归一批数据。为了加速卷积神经网络的训练,降低对网络初始化的敏感性,在卷积层和非线性之间使用批量归一化层,例如Relu层。年代p一个n>
通过减去迷你批量均值并除以迷你批量标准偏差,第一层首先使每个信道的激活进行归一化。然后,该层通过可学习的偏移移动输入β并通过学习的比例因子来缩放它γ..β和γ.本身是在网络培训期间更新的可学习参数。
批量归一化层将激活和梯度通过神经网络传播,使网络培训更容易优化问题。为了充分利用这一事实,您可以尝试提高学习率。由于优化问题更容易,因此参数更新可以更大,网络可以更快地学习。您也可以尝试减少l<年代ub>2年代ub>和辍学正规化。使用批处理归一化层,在训练过程中特定图像的激活取决于哪个图像碰巧出现在同一小批处理中。为了充分利用这种正则化效果,可以尝试在每个训练时期之前对训练数据进行洗牌。要指定在训练期间洗牌数据的频率,请使用
使用relu层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.relulayer.html">抵押者
.
ReLU层对输入的每个元素执行一个阈值操作,其中任何小于零的值都被设置为零。年代p一个n>
卷积和批处理归一化层后面通常跟着一个非线性激活函数,如由ReLU层指定的整流线性单元(ReLU)。ReLU层对每个元素执行一个阈值操作,其中任何小于0的输入值都被设为0,即:
Relu层不会改变其输入的大小。
还有其他非线性激活图层执行不同的操作,可以提高某些应用程序的网络精度。有关激活图层列表,请参阅<一个href="//www.tatmou.com/help/deeplearning/ug/list-of-deep-learning-layers.html" class="a">激活层一个>.
创建一个跨通道标准化层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.crosschannelnormalizationlayer.html">crossChannelNormalizationLayer
.
频道明智的本地响应(跨通道)归一化层执行通道明智的归一化。年代p一个n>
该层执行频道明智的本地响应标准化。它通常遵循Relu激活层。该层替换具有归一化值的每个元素,它使用来自特定数量的相邻信道(归一化窗口中的元素)获得的元素。也就是说,对于每个元素<年代p一个ncl一个年代年代="inlineequation">
在输入中,
在哪里K,α.,β是标准化中的普遍顺序,还有党卫军是标准化窗口中元素的平方和吗<一个href="//www.tatmou.com/help/deeplearning/ug/layers-of-a-convolutional-neural-network.html" class="intrnllnk">[2]一个>.属性指定规范化窗口的大小
前面的归一化公式与所给出的略有不同<一个href="//www.tatmou.com/help/deeplearning/ug/layers-of-a-convolutional-neural-network.html" class="intrnllnk">[2]一个>.你可以通过乘以得到等价的公式
最大池层通过将输入划分为矩形池区域来执行下采样,并计算每个区域的最大值。年代p一个n>使用max池层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.maxpooling2dlayer.html">maxPooling2dLayer
.
平均池层通过将输入划分为矩形池区域并计算每个区域的平均值来执行下采样。年代p一个n>使用平均池层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.averagepooling2dlayer.html">普通Pooling2dlayer.
.
汇集层遵循卷积层进行下采样,从而减少与以下层的连接数量。它们不执行任何学习本身,但减少了在以下层中学习的参数的数量。他们还有助于减少过度装备。
最大池化层返回其输入矩形区域的最大值。矩形区域的大小由
汇集层通过在步骤尺寸下水平和垂直扫描输入,您可以使用该尺寸
对于不重叠区域(池大小和步行是相等的),如果池层的输入是n-经过-n,池域大小为h-经过-h,然后池化层向下对区域进行采样h[6]一个>.也就是说,一个卷积层的一个通道的最大或平均池层的输出是n/h-经过-n/h.对于重叠区域,池层的输出是(输入大小- - - - - -池大小+ 2 *填充/步行+ 1。
创建一个dropout层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.dropoutlayer.html">dropoutLayer
.
丢弃层随机将输入元素随机设置为零,具有给定的概率。年代p一个n>
在训练时,该层随机设置输入元素为dropout mask给定的零
与最大或平均池层相似,在这一层中不发生学习。
使用完全连接的图层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.fullyconnectedlayer.html">fullyConnectedLayer
.
完全连接的层将输入乘以权重矩阵,然后添加偏置向量。年代p一个n>
卷积(和下采样)层之后是一个或多个完全连接层。
顾名思义,完全连接层中的所有神经元都与前一层中的所有神经元相连。这一层结合了所有的特征(局部信息)从前一层学习到的图像,以识别更大的模式。在分类问题上,最后一层完全连通层结合特征对图像进行分类。这就是……的原因
您还可以使用相关名称 - 值对参数在创建完全连接的图层时调整该图层的学习速率和正则化参数。如果您选择不调整它们,那么
完全连接的图层将输入乘以权重矩阵W然后加上一个偏差向量b.
如果对图层的输入是序列(例如,在LSTM网络中),则完全连接的层在每次步骤上独立起作用。例如,如果在完全连接层之前的图层输出阵列X大小D-经过-N-经过-年代,则全连接层输出一个数组Z大小
Softmax层将SoftMax函数应用于输入。年代p一个n>创建一个软最大层使用<一个href="//www.tatmou.com/help/deeplearning/ref/nnet.cnn.layer.softmaxlayer.html">softmaxlayer.
.
分类层计算具有互斥类的分类和加权分类任务的跨熵丢失。年代p一个n>使用分类图层使用<一个href="//www.tatmou.com/help/deeplearning/ref/classificationlayer.html">classificationLayer
.
对于分类问题,Softmax层然后是分类层必须遵循最终完全连接的层。
输出单元激活功能是SoftMax功能:
在哪里<年代p一个ncl一个年代年代="inlineequation"> 和<年代p一个ncl一个年代年代="inlineequation"> .
SoftMax函数是在最后一个完全连接的层进行多级分类问题后的输出单元激活功能:
在哪里<年代p一个ncl一个年代年代="inlineequation"> 和<年代p一个ncl一个年代年代="inlineequation"> .此外,<年代p一个ncl一个年代年代="inlineequation"> ,<年代p一个ncl一个年代年代="inlineequation"> 样本的条件概率是给定的吗r,<年代p一个ncl一个年代年代="inlineequation"> 是课程的现有概率。
softmax也被称为<年代p一个ncl一个年代年代="emphasis">标准化指数并且可以被认为是物流符合物流函数的多级概括<一个href="//www.tatmou.com/help/deeplearning/ug/layers-of-a-convolutional-neural-network.html" class="intrnllnk">[8]一个>.
对于典型的分类网络,分类层必须遵循SoftMax层。在分类层中,
在哪里N为样本数,K为班级数,<年代p一个ncl一个年代年代="inlineequation"> 是课堂的重量我,<年代p一个ncl一个年代年代="inlineequation"> 指标是n这个样品属于我班级,和<年代p一个ncl一个年代年代="inlineequation"> 是样本的输出n上课我,在这种情况下,它是来自SoftMax函数的值。换句话说,<年代p一个ncl一个年代年代="inlineequation"> 网络与网络相关的可能性n用课堂输入我.
创建一个回归层使用<一个href="//www.tatmou.com/help/deeplearning/ref/regressionlayer.html">回归金属
.
回归层计算回归任务的半平均误差损失。年代p一个n>对于典型的回归问题,回归层必须在最终完全连通层之后。
对于单个观察,平均方形错误由:
在哪里R为响应次数,t<年代ub>我年代ub>是目标输出,和y<年代ub>我年代ub>是网络对响应的预测我.
对于图像和序列到一个回归网络,回归层的损耗函数是预测响应的半平均平方误差,不归一化R:
对于图像到图像回归网络,回归层的丢失函数是每个像素的预测响应的半平均误差,而不是归一化的R:
在哪里H,W,C分别表示输出通道的高度、宽度和数量,和p的每个元素(像素)的索引t和y线性。
对于序列-序列回归网络,回归层的损失函数是每个时间步的预测响应的半均方误差,而不是归一化R:
在哪里年代为序列长度。
培训时,软件计算迷你批次中的观测的平均损失。
K. P.墨菲机器学习:概率视角.马萨诸塞州剑桥:麻省理工学院出版社,2012年。
Krizhevsky, A. I. Sutskever和G. E. Hinton。基于深度卷积神经网络的图像网络分类神经信息处理系统的进步.25卷,2012年。
[3] LeCun, Y., Boser, B., Denker, J.S., Henderson, D., Howard, r.e., Hubbard, W., jackkel, l.d.等。“基于反向传播网络的手写数字识别”。“在神经信息处理系统研究进展1990年。
[4] Lecun,Y.,L. Bottou,Y.Bengio和P. Haffner。“基于渐变的学习应用于文件识别”。IEEE的诉讼程序。VOL 86,PP。2278-2324,1998。
Nair V.和g.e. Hinton。修正线性单元改进受限玻尔兹曼机第27届机器学习国际会议,2010。
Nagi, J., F. Ducatelle, G. A. Di Caro, D. Ciresan, U. Meier, A. Giusti, F. Nagi, J. Schmidhuber, L. M. Gambardella。基于视觉的手势识别的最大池卷积神经网络。IEEE信号和图像处理应用国际会议(ICSIPA2011),2011年。
[7] Srivastava,N.,G. Hinton,A. Krizhevsky,I. Sutskever,R. Salakhutdinov。“辍学:防止神经网络过度装备的简单方法。”机器学习研究杂志.卷。15,pp。1929-1958,2014。
[8] Bishop,C. M.模式识别和机器学习.Springer,纽约,NY,2006年。
[9] Ioffe, Sergey和Christian Szegedy。批处理规范化:通过减少内部协变量移位来加速深度网络训练<年代p一个ncl一个年代年代="emphasis">预印,arxiv:1502.03167(2015)。
普通Pooling2dlayer.
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">batchNormalizationLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">classificationLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">clippedReluLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">convolution2dLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">crossChannelNormalizationLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">dropoutLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">fullyConnectedLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">imageInputLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">leakyReluLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">maxPooling2dLayer
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">回归金属
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">抵押者
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">softmaxlayer.
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">trainingOptions
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">Trainnetwork.
[年代p一个n>1一个>]年代p一个n>图像信用:<一个href="https://github.com/vdumoulin/conv_arithmetic" target="_blank">卷积算术一个>(<一个href="https://github.com/vdumoulin/conv_arithmetic/blob/master/LICENSE" target="_blank">执照一个>)