创建和训练新的卷积神经网络(ConvNet)的第一步是定义网络结构。本主题解释了ConvNet层的细节,以及它们在ConvNet中出现的顺序。有关深度学习层的完整列表以及如何创建它们,请参见<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ug/list-of-deep-learning-layers.html" class="a">深度学习层列表一种>.要了解序列分类和回归的LSTM网络,请参阅<一种HR.E.F="https://nl.mathworks.com/help/deeplearning/ug/long-short-term-memory-networks.html" class="a">长期短期内存网络一种>.要了解如何创建自己的自定义图层,请参阅<一种HR.E.F="https://nl.mathworks.com/help/deeplearning/ug/define-custom-deep-learning-layers.html" class="a">定义自定义深度学习层一种>.
网络架构可以根据所包含的层的类型和数量而有所不同。所包含的层的类型和数量取决于特定的应用程序或数据。例如,分类网络通常有一个软最大层和一个分类层,而回归网络必须在网络的末端有一个回归层。只有一个或两个卷积层的更小的网络可能足以对少量灰度图像数据进行学习。另一方面,对于包含数百万彩色图像的更复杂的数据,您可能需要一个包含多个卷积和完全连接层的更复杂的网络。
要指定具有顺序连接的所有图层的深网络的体系结构,请直接创建一系列图层。例如,要创建将28-×28灰度图像分类为10类的深网络,请指定图层数组
图层= [imageInputlayer([28 28 1])卷积2dlayer(3,16,'填充',1)BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'stride',2)卷积2dlayer(3,32,'填充',1)BatchnormalizationLayer ultultonnectedLayer(10)SoftmaxLayer分类层];
层数是一系列的层对象。然后你可以使用层数作为培训功能的输入Trainnetwork..
要指定神经网络的结构,使所有层都按顺序连接,直接创建一个层数组。要指定网络的结构,其中各层可以有多个输入或输出,请使用<一种HR.E.F="https://nl.mathworks.com/help/deeplearning/ref/nnet.cnn.layergraph.html">分层图对象。
图像输入层
使用图像输入图层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.imageinputlayer.html">imageInputLayer.
图像输入层将图像输入到网络并应用数据归一化。
属性指定图像大小inputSize争论。图像的大小对应于该图像的高度,宽度和颜色信道的数量。例如,对于灰度图像,通道的数量为1,并且对于彩色图像为3。
卷积的层
二维卷积层将滑动卷积滤波器应用于二维输入。使用2-D卷积层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.convolution2dlayer.html">convolution2dLayer.
卷积层由各种组件组成。[ 1一种>]
过滤器和步
卷积层由连接到输入图像的子区域或前一层的输出的神经元组成。该图层学习这些区域本地化的功能,同时扫描图像。使用使用的图层时<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.convolution2dlayer.html">convolution2dLayer功能,您可以使用该区域指定这些区域的大小过滤输入参数。
对于每个地区,Trainnetwork.函数计算权值与输入的点积,然后加上偏差项。应用于图像中某一区域的一组权值称为过滤器
.滤波器沿输入图像垂直和水平移动,对每个区域重复相同的计算。换句话说,过滤器对输入进行卷积。
此图像显示通过输入的3×3滤波器扫描。下映射表示输入,上部映射表示输出。
滤波器移动的步长称为步行.属性可以指定步长步名称-值对的论点。神经元连接的局部区域可能会重叠,这取决于过滤和'走吧'值。
这张图片显示了一个3 × 3的过滤器以2的步幅扫描输入。下映射表示输入,上部映射表示输出。
过滤器中的权重数是H *W. *C ,在那里H 是身高,和W. 滤镜的宽度分别是和吗C 为输入中的通道数。例如,如果输入是彩色图像,则颜色通道数为3。滤波器的数量决定了卷积层输出的通道数量。属性指定筛选器的数目numfilters.参数与convolution2dLayer函数。
扩张卷积
扩张的卷积是一种卷积,其中滤光器通过插入在滤波器的元件之间插入的空间而扩展。使用该指定扩张因子“DilationFactor”财产。
使用扩展卷积来增加层的接受域(层可以看到的输入区域),而不增加参数或计算的数量。
通过在每个滤波器元件之间插入零来扩展滤光器。扩张因子确定用于对输入或等效进行采样的步长或等效滤波器的上采样因子。它对应于(过滤尺寸 - 1) *扩张因子 + 1。例如,一个带有膨胀系数的3 × 3滤波器(2 - 2)相当于元素之间的零的5×5滤波器。
该图像显示3×3滤波器,其通过输入扫描两次扫描。下映射表示输入,上部映射表示输出。
特征图
由于过滤器沿输入移动,它使用相同的重量和相同的卷积偏置,形成a特色地图.每个特征图都是使用不同权重集和不同偏差进行卷积的结果。因此,特征图的数量等于过滤器的数量。卷积层的参数总数为((H *W. *C + 1) *过滤器数量 ),其中1为偏差。
填充
您还可以将填充垂直和水平应用填充到输入图像边框“填充”名称-值对的论点。填充是附加到输入边界以增加其大小的值。通过调整填充,你可以控制图层的输出大小。
此图像显示通过输入填充的输入3×3过滤器扫描尺寸1.下映射表示输入,上部图表示输出。
输出大小
卷积层的输出高度和宽度是(输入的大小 - ((过滤尺寸 - 1) *扩张因子 + 1 + 2*填充 /步 + 1。这个值必须是一个整数,这样整个图像才能被完全覆盖。如果这些选项的组合没有导致图像被完全覆盖,软件默认会忽略图像的右侧和底部边缘的剩余部分。
数量的神经元
输出高度和宽度的产物为特征图提供了神经元的总数地图大小 .卷积层中的神经元(输出大小)的总数是地图大小 *过滤器数量 .
例如,假设输入图像是一个32 × 32 × 3的彩色图像。对于一个包含8个过滤器,过滤器大小为5 × 5的卷积层,每个过滤器的权重数为5 * 5 * 3 = 75,层中的参数总数为(75 + 1)* 8 = 608。如果每个方向的步幅为2,并指定填充大小为2,则每个feature map为16 × 16。这是因为(32 - 5 + 2 * 2)/2 + 1 = 16.5,并且一些最外层的填充到右边和底部的图像被丢弃。最后,层中神经元的总数为16 * 16 * 8 = 2048。
通常,这些神经元产生的结果会经过某种形式的非线性,如线性整流单元(ReLU)。
学习参数
您可以使用名称值对参数调整图层的学习速率和正则化选项,同时定义卷积层。如果您选择不指定这些选项,那么Trainnetwork.使用定义的全局培训选项trainingOptions函数。有关全球和图层培训选项的详细信息,请参阅<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ug/setting-up-parameters-and-training-of-a-convnet.html" class="a">设置参数和火车卷积神经网络一种>.
层数
卷积神经网络可以包括一个或多个卷积层。卷积层的数量取决于数据的量和复杂性。
使用。创建批处理规范化层<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.batchnormalizationlayer.html"> 批处理归一化层对每个通道的所有观测数据进行独立的归一化。为了加快卷积神经网络的训练,降低对网络初始化的敏感性,在卷积层和非线性层之间使用批处理归一化层,如ReLU层。 该层首先通过减去小批量均值并除以小批量标准差对每个通道的激活进行归一化。然后,该层将输入移动一个可学习的偏移量 批处理归一化层将通过神经网络传播的激活和梯度归一化,使网络训练成为一个更容易的优化问题。为了充分利用这一事实,你可以尝试提高学习速度。由于优化问题更容易,参数更新可以更大,网络可以更快地学习。你也可以试着减小LbatchNormalizationLayer.
创建一个ReLU层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.relulayer.html"> Relu层对输入的每个元素执行阈值操作,其中任何小于零的值被设置为零。 卷积和批量归一化层通常之后是由Relu层指定的整流线性单元(Relu)之后的非线性激活功能。Relu层对每个元素执行阈值操作,其中小于零的任何输入值设置为零,即,
Relu层不会改变其输入的大小。
还有其他非线性激活图层执行不同的操作,可以提高某些应用程序的网络精度。有关激活图层列表,请参阅<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ug/list-of-deep-learning-layers.html" class="a">激活层一种>.
剥离.
使用跨通道归一化层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.crosschannelnormalizationlayer.html"> 频道明智的本地响应(跨通道)归一化层执行通道明智的归一化。 这一层执行通道局部响应规格化。它通常跟随ReLU激活层。这一层将每个元素替换为一个标准化值,该值是使用来自一定数量的相邻通道(标准化窗口中的元素)的元素获得的。也就是说,对于每个元素
在哪里 前面的归一化公式与所给出的略有不同<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ug/layers-of-a-convolutional-neural-network.html" class="intrnllnk">[2]一种>.您可以通过乘以等效公式乘以crossChannelNormalizationLayer.
二维最大池化层通过将输入分割成矩形池化区域,然后计算每个区域的最大值来进行向下采样。创建一个最大池化层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.maxpooling2dlayer.html"> 二维平均池化层通过将输入分割成矩形池化区域,然后计算每个区域的平均值来进行下采样。使用平均池池使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.averagepooling2dlayer.html"> 汇集层遵循卷积层进行下式采样,从而减少与以下层的连接数量。它们不执行任何学习本身,但减少了在下层中学到的参数的数量。他们也有助于减少过度装备。
最大池池层返回其输入的矩形区域的最大值。矩形区域的大小由 汇集层通过水平和垂直扫描在步骤尺寸中扫描您可以使用该尺寸 对于非传播区域(maxPooling2dLayer.
averagePooling2dLayer.
使用丢弃层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.dropoutlayer.html"> dropout层以给定的概率将输入元素随机设置为零。 在训练时,图层随机将输入元素随机设置为零件掩码给出的零 类似于最大或平均池层,在这层中没有学习。
dropoutLayer.
创建一个完全连接的层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.fullyconnectedlayer.html"> 一个完全连通的层将输入乘以一个权值矩阵,然后添加一个偏置向量。 卷积(和下采样)层之后是一个或多个完全连接的层。
顾名思义,完全连接层中的所有神经元连接到前一层中的所有神经元。该层组合在图像上通过前一层学习的所有特征(本地信息)以识别更大的模式。对于分类问题,最后一个完全连接的图层组合了分类图像的特征。这就是这样的原因 在创建完全连接层时,还可以使用相关的名称-值对参数来调整该层的学习率和正则化参数。如果你选择不调整,那么 一个完全连通的层将输入乘以一个权矩阵 如果该层的输入是一个序列(例如,在LSTM网络中),则全连接层在每个时间步独立工作。例如,如果完全连接层之前的层输出一个数组全康无经.
Softmax层将SoftMax函数应用于输入。创建一个软最大层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/nnet.cnn.layer.softmaxlayer.html"> 分类层计算分类和具有互斥类的加权分类任务的交叉熵损失。使用备受创建分类层<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/classificationlayer.html"> 对于分类问题,软最大层和分类层通常在最后的完全连接层之后。
输出单元激活函数为softmax函数:
在哪里softmaxLayer.
.
classificationLayer.
和
softmax函数是针对多类分类问题的最后一层全连接后的输出单元激活函数:
在哪里 softmax也被称为 对于典型的分类网络,分类层通常在softmax层之后。在分类层,
在哪里
创建一个回归层使用<一种HR.E.F="//www.tatmou.com/nl/help/deeplearning/ref/regressionlayer.html"> 回归层计算回归任务的半平均误差损失。对于典型的回归问题,回归层必须遵循最终完全连接的层。
对于单个观察,平均方形错误由:
在哪里 对于图像和序列一回归网络,回归层的损失函数是预测响应的半均方误差,而不是归一化
对于图像到图像回归网络,回归层的丢失函数是每个像素的预测响应的半平均误差,而不是由标准化的
在哪里 对于序列到序列回归网络,回归层的丢失函数是每次步骤的预测响应的半平均平方误差,而不是由
在哪里 在训练时,该软件计算在小批的观测值上的平均损失。
回归.
K. P.墨菲
[2] Krizhevsky,A.,I. Sutskever和G. E. Hinton。“具有深度卷积神经网络的Imagenet分类。”
[3] LeCun, Y., Boser, B., Denker, J.S., Henderson, D., Howard, r.e., Hubbard, W., jackkel, l.d.等。“基于反向传播网络的手写数字识别”。“在
[4] Lecun,Y.,L. Bottou,Y.Bengio和P. Haffner。'基于渐变的学习应用于文件识别。''
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。基于视觉的手势识别的最大池卷积神经网络。
Srivastava, N. G. Hinton, A. Krizhevsky, I. Sutskever, R. Salakhutdinov。Dropout:一种防止神经网络过拟合的简单方法
[8]毕晓普
[9] Ioffe, Sergey和Christian Szegedy。批处理归一化:通过减少内部协变量移位加速深度网络训练预印本,2015年3月2日提交。https://arxiv.org/abs/1502.03167。
convolution2dLayer
|batchNormalizationLayer
|dropoutLayer
|averagePooling2dLayer
|maxPooling2dLayer
|classificationLayer
|回归
|softmaxLayer
|crossChannelNormalizationLayer
|全康无经
|剥离
|漏滤网
|clippedReluLayer
|imageInputLayer
|trainingOptions
|Trainnetwork.
[1一种>]图像信用:<一种HR.E.F="https://github.com/vdumoulin/conv_arithmetic" target="_blank">卷积运算一种>(<一种HR.E.F="https://github.com/vdumoulin/conv_arithmetic/blob/master/LICENSE" target="_blank">执照一种>的)