指定卷积神经网络的层

您所在的位置:网站首页 marhworks软件激活 指定卷积神经网络的层

指定卷积神经网络的层

2023-05-19 16:34| 来源: 网络整理| 查看: 265

指定卷积神经网络的层

创建和训练新卷积神经网络 (ConvNet) 的第一步是定义网络架构。本主题说明 ConvNet 层的细节,以及这些层在 ConvNet 中出现的顺序。有关深度学习层的完整列表以及如何创建它们,请参阅深度学习层列表。要了解序列分类和回归的 LSTM 网络,请参阅长短期记忆神经网络。要了解如何创建自己的自定义层,请参阅定义自定义深度学习层。

根据所包含的层的类型和数量,网络架构可能有所不同。包含的层的类型和数量取决于特定的应用或数据。例如,分类网络通常有 softmax 层和分类层,而回归网络必须在网络末尾有回归层。只包含一个或两个卷积层的较小网络可能基于少量灰度图像数据进行学习就足够了。另一方面,对于具有数百万彩色图像的更复杂数据,您可能需要包含多个卷积层和全连接层的更复杂的网络。

要指定所有层按顺序连接的深度网络的架构,请直接创建一个层数组。例如,要创建一个将 28×28 灰度图像分为 10 个类的深度网络,请指定层数组。

layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,16,'Padding',1) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,32,'Padding',1) batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];layers 是 Layer 对象组成的数组。然后,您可以使用 layers 作为训练函数 trainNetwork 的输入。

要指定所有层按顺序连接的神经网络的架构,请直接创建一个层数组。要指定层可以有多个输入或输出的网络架构,请使用 LayerGraph 对象。

图像输入层

使用 imageInputLayer 创建一个图像输入层。

图像输入层将图像输入到网络并应用数据归一化。

使用 inputSize 参数指定图像大小。图像的大小对应于该图像的高度、宽度和颜色通道的数量。例如,对于灰度图像,通道数为 1,而对于彩色图像,通道数为 3。

卷积层

二维卷积层将滑动卷积滤波器应用于二维输入。使用 convolution2dLayer 创建一个二维卷积层。

卷积层包含各种组成部分。1

滤波器和步幅

卷积层由连接到输入图像的子区域或连接到前一层的输出的神经元组成。该层在扫描图像的同时学习由这些区域所局部化的特征。使用 convolution2dLayer 函数创建层时,您可以使用 filterSize 输入参数指定这些区域的大小。

对于每个区域,trainNetwork 函数计算权重和输入的点积,然后加上偏置项。应用于图像中某个区域的一组权重称为滤波器。滤波器沿输入图像垂直和水平移动,对每个区域重复相同的计算。换句话说,滤波器对输入进行卷积。

下图显示一个扫描输入的 3×3 滤波器。下部子图表示输入,上部子图表示输出。

滤波器移动的步长称为步幅。您可以使用 Stride 名称-值对组参数指定步长。神经元连接的局部区域可能会重叠,具体取决于 filterSize 和 'Stride' 值。

下图显示一个扫描输入的 3×3 滤波器,步幅为 2。下部子图表示输入,上部子图表示输出。

滤波器中的权重数为 h*w*c,其中 h 是高度,w 是滤波器的宽度,c 是输入中的通道数。例如,如果输入是彩色图像,则颜色通道的数量是 3。滤波器的数量决定卷积层输出中的通道数量。使用 numFilters 参数和 convolution2dLayer 函数指定滤波器的数量。

扩张卷积

在扩张卷积中,通过在滤波器元素之间插入空白来扩展滤波器。使用 'DilationFactor' 属性指定扩张系数。

使用扩张卷积可增加层的感受野(层可以看到的输入区域),而不增加参数个数或计算量。

层通过在每个滤波器元素之间插入零来扩展滤波器。扩张系数决定对输入进行采样的步长,或等效地决定滤波器的上采样因子。它对应的有效滤波器大小为:(Filter Size – 1) .* Dilation Factor + 1。例如,扩张系数为 [2 2] 的 3×3 滤波器等效于在元素间插入零的 5×5 滤波器。

下图显示一个使用扩张系数 2 扫描输入来扩张的 3×3 滤波器。下部子图表示输入,上部子图表示输出。

特征图

当滤波器扫描输入时,它对卷积使用相同的权重和偏置,从而形成特征图。每个特征图均为使用不同权重集和不同偏置的卷积结果。因此,特征图的数量等于滤波器的数量。卷积层中的参数总数为 ((h*w*c + 1)*Number of Filters),其中 1 为偏置。

填充

您还可以使用 'Padding' 名称-值对组参数在垂直和水平方向上对输入图像边界应用填充。填充是指将向输入图像的边界追加值以增大其大小。通过调整零填充,您可以控制层的输出大小。

下图显示一个用于扫描输入的 3×3 滤波器,其零填充大小为 1。下部子图表示输入,上部子图表示输出。

输出大小

卷积层的输出高度和宽度为 (Input Size – ((Filter Size – 1)*Dilation Factor + 1) + 2*Padding)/Stride + 1。此值必须为整数,才能完全覆盖整个图像。如果这些选项的组合无法完全覆盖图像,则默认情况下,软件会忽略卷积中沿图像右边缘和下边缘的其余部分。

神经元数量

输出高度和宽度的乘积是特征图中神经元的总数,即 Map Size。卷积层中的神经元总数(输出大小)是 Map Size*Number of Filters。

例如,假设输入图像是一个 32×32×3 彩色图像。对于具有 8 个滤波器且滤波器大小为 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))形式进行传递。

学习参数

在定义卷积层时,您可以使用名称-值对组参数来调整层的学习率和正则化选项。如果您选择不指定这些选项,则 trainNetwork 将使用通过 trainingOptions 函数定义的全局训练选项。有关全局和层训练选项的详细信息,请参阅设置参数并训练卷积神经网络。

层数

一个卷积神经网络可以包含一个或多个卷积层。卷积层的数量取决于数据的量和复/实性。

批量归一化层

使用 batchNormalizationLayer 创建一个批量归一化层。

批量归一化层独立地对每个通道的所有观测值的小批量数据进行归一化。为了加快卷积神经网络的训练并降低对网络初始化的敏感度,请在卷积层和非线性部分之间使用批量归一化层,如 ReLU 层。

该层首先通过减去小批量均值并除以小批量标准差来归一化每个通道的激活。然后,该层按可学习偏移量 β 对输入进行偏移,并按可学习缩放因子 γ 对其进行缩放。β 和 γ 本身就是在网络训练期间会更新的可学习参数。

批量归一化层对神经网络中的激活值和梯度传播进行归一化,使网络训练成为更简单的优化问题。为了充分利用这一点,您可以尝试提高学习率。由于优化问题更容易,参数更新可以更大,网络学习的速度更快。您也可以尝试减少 L2 和丢弃正则化。对于批量归一化层,特定图像在训练期间的激活取决于哪些图像碰巧出现在同一小批量中。为了充分利用这种正则化效果,请尝试在每轮训练之前对训练数据进行乱序处理。要指定训练期间数据乱序的频率,请使用 trainingOptions 的 'Shuffle' 名称-值对组参数。

ReLU 层

使用 reluLayer 创建一个 ReLU 层。

ReLU 层对输入的每个元素执行阈值运算,其中任何小于零的值都设置为零。

卷积层和批量归一化层通常后跟非线性激活函数,例如由 ReLU 层指定的修正线性单元 (ReLU)。ReLU 层对每个元素执行阈值运算,其中任何小于零的输入值都设置为零,即

f(x)={x,x≥00,x



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3