主要内容

batchNormalizationLayer

批处理规范化层

描述

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

归一化后,该层用可学习的比例因子缩放输入γ并将其偏移一个可学习的偏移量β.

创建

描述

= batchNormalizationLayer创建批处理规范化层。

实例

= batchNormalizationLayer (名称、值)创建批处理规范化层并设置可选的受训男子,TrainedVariance,ε,参数和初始化,学习率与正则化,的名字使用一个或多个名称-值对的属性。例如batchNormalizationLayer('Name','batchnorm'))使用名称创建批处理规格化层“batchnorm”.

属性

全部展开

批量标准化

用于预测的平均统计量,指定为下列之一:

  • 对于二维图像输入,大小为1×1×1的数字数组-数字通道

  • 对于三维图像输入,大小为1 × 1 × 1 × -的数字数组数字通道

  • 对于特征或序列输入,有大小的数字数组数字通道1

如果“BatchNormalizationStatistics”训练方法是“移动”,然后软件使用运行估计值近似训练期间的批量标准化统计数据,并在训练后设置受训男子TrainedVariance属性的最新值的移动估计的平均值和方差,分别。

如果“BatchNormalizationStatistics”训练方法是“人口”,则在网络训练结束后,软件再次对数据进行遍历,并设置受训男子TrainedVariance属性分别为从整个训练数据集计算的均值和方差。

该层使用受训男子TrainedVariance在预测期间对输入进行归一化。

用于预测的方差统计量,指定为下列之一:

  • 对于二维图像输入,大小为1×1×1的数字数组-数字通道

  • 对于三维图像输入,大小为1 × 1 × 1 × -的数字数组数字通道

  • 对于特征或序列输入,有大小的数字数组数字通道1

如果“BatchNormalizationStatistics”训练方法是“移动”,然后软件使用运行估计值近似训练期间的批量标准化统计数据,并在训练后设置受训男子TrainedVariance属性的最新值的移动估计的平均值和方差,分别。

如果“BatchNormalizationStatistics”训练方法是“人口”,则在网络训练结束后,软件再次对数据进行遍历,并设置受训男子TrainedVariance属性分别为从整个训练数据集计算的均值和方差。

该层使用受训男子TrainedVariance在预测期间对输入进行归一化。

要添加到小批量方差的常量,指定为等于或大于的数值标量1 e-5.

该层在标准化之前将此常量添加到小批方差中,以确保数值稳定性并避免被零除。

输入通道的数量,指定为“自动”或者一个正整数。

此属性始终等于层输入的通道数。如果数字通道“自动”,则软件自动确定训练时通道数的正确值。

参数和初始化

函数初始化通道比例因子,指定为以下值之一:

  • “的”-初始化通道比例因子为1。

  • “零”–用零初始化通道比例因子。

  • “narrow-normal”–通过从平均值为零、标准偏差为0.01的正态分布中独立采样,初始化通道比例因子。

  • 函数句柄–使用自定义函数初始化通道比例因子。如果指定函数句柄,则函数的形式必须为规模= func(深圳),在那里深圳是尺度的大小。例如,请参见指定自定义权重初始化函数.

该层仅在以下情况下初始化通道比例因子:规模属性为空。

数据类型:字符|字符串|功能手柄

函数初始化通道偏移,指定为以下之一:

  • “零”-初始化通道偏移量为零。

  • “的”–使用1初始化通道偏移。

  • “narrow-normal”-从均值为零、标准差为0.01的正态分布中独立抽样,初始化通道偏移量。

  • 函数句柄-用自定义函数初始化通道偏移量。如果指定函数句柄,则该函数必须是这种形式的偏移量=func(sz),在那里深圳是尺度的大小。例如,请参见指定自定义权重初始化函数.

层只初始化通道偏移时抵消属性为空。

数据类型:字符|字符串|功能手柄

渠道规模因素γ,指定为数字数组。

通道比例因子是可学习的参数。当您培训网络时,如果规模非空的,那么列车网络使用规模属性作为初始值。如果规模那么是空的吗列车网络使用指定的初始化式ScaleInitializer.

训练时,,规模是下列情况之一:

  • 对于二维图像输入,大小为1×1×1的数字数组-数字通道

  • 对于三维图像输入,大小为1 × 1 × 1 × -的数字数组数字通道

  • 对于特征或序列输入,有大小的数字数组数字通道1

通道偏移β,指定为数字数组。

信道偏移量是可学习的参数。当你训练一个网络,如果抵消非空的,那么列车网络使用抵消属性作为初始值。如果抵消那么是空的吗列车网络使用指定的初始化式OffsetInitializer.

训练时,,抵消是下列情况之一:

  • 对于二维图像输入,大小为1×1×1的数字数组-数字通道

  • 对于三维图像输入,大小为1 × 1 × 1 × -的数字数组数字通道

  • 对于特征或序列输入,有大小的数字数组数字通道1

移动平均计算的衰减值,指定为之间的数值标量01..

“BatchNormalizationStatistics”训练方法是“移动”,在每次迭代时,该层使用

μ * = λ μ μ ^ + ( 1. λ μ ) μ ,

在哪里 μ * 为更新后的平均值, λ μ 表示平均衰减值, μ ^ 为层输入的平均值,为 μ 表示移动平均值的最新值。

如果“BatchNormalizationStatistics”训练方法是“人口”,则此选项无效。

数据类型:|

移动方差计算的衰减值,指定为之间的数值标量01..

“BatchNormalizationStatistics”训练方法是“移动”,在每次迭代时,该层使用

σ 2. * = λ σ 2. σ 2. ^ + ( 1. λ σ 2. ) σ 2. ,

在哪里 σ 2. * 表示更新后的方差, λ σ 2. 表示方差衰减值, σ 2. ^ 表示层输入的方差,和 σ 2. 表示移动方差值的最新值。

如果“BatchNormalizationStatistics”训练方法是“人口”,则此选项无效。

数据类型:|

学习率与正则化

比例因子的学习率因子,指定为非负标量。

该软件将这个因子乘以全局学习率,以确定一层中比例因子的学习率。例如,如果ScaleLearnRateFactor2.,则该层中尺度因子的学习率为当前全局学习率的两倍。该软件根据指定的设置来确定全局学习率trainingOptions作用

偏移量的学习率因子,指定为非负标量。

该软件将这个因子乘以全局学习率,以确定一层中偏移的学习率。例如,如果补偿系数2.,则该层中偏移量的学习率为当前全局学习率的两倍。该软件根据指定的设置来确定全局学习率trainingOptions作用

L2.比例因子的正则化因子,指定为非负标量。

软件将该系数乘以全局L2.正则化因子来确定一层中尺度因子的学习率。例如,如果ScaleL2Factor2.,然后是L2.正则化的层偏移量是全局L的两倍2.正则化因子。您可以指定全局L2.正则化因子trainingOptions作用

L2.指定为非负标量的偏移量的正则化因子。

软件将该系数乘以全局L2.正则化因子来确定一层中偏移量的学习率。例如,如果OffsetL2Factor2.,然后是L2.正则化的层偏移量是全局L的两倍2.正则化因子。您可以指定全局L2.正则化因子trainingOptions作用

层名,指定为字符向量或字符串标量。为数组输入,列车网络,assembleNetwork,layerGraph,dlnetwork函数自动为层分配名称的名字着手''.

数据类型:字符|字符串

此属性是只读的。

层的输入数。这一层只接受单个输入。

数据类型:

此属性是只读的。

输入层名。这一层只接受单个输入。

数据类型:单间牢房

此属性是只读的。

层的输出数。此层只有一个输出。

数据类型:

此属性是只读的。

输出层的名称。这一层只有一个输出。

数据类型:单间牢房

例子

全部崩溃

创建一个名为“BN1”.

层= batchNormalizationLayer (“姓名”,“BN1”)
layer=BatchNormalizationLayer,属性:名称:“BN1”NumChannel:“自动”TrainedMean:[]TrainedVariance:[]超参数平均衰减:0.1000方差衰减:0.1000ε:1.0000e-05可学习参数偏移量:[]比例:[]显示所有属性

将批处理规范化层包含在大堆

layers = [imageInputLayer([32 32 3])]“填充”,1)batchNormalizationLayer reluLayer MaxPoolig2Dlayer(2,“大步走”32岁的,2)convolution2dLayer (3“填充”,1) batchNormalizationLayer reluLayer fulllyconnectedlayer (10) softmaxLayer classificationLayer]
图层数组:1”的形象输入32 x32x3图像zerocenter正常化2”卷积16 3 x3的隆起与步幅[1]和填充[1 1 1 1]3“批量标准化批量标准化4”ReLU ReLU 5”麦克斯池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]6”卷积32 3 x3的隆起与步幅[1]和填充[1 1 1 1]7 '' Batch Normalization Batch normalization 8 '' ReLU ReLU 9 '' Fully Connected 10 fully connected layer 10 '' Softmax softmax 11 '' Classification Output crossentropyex

更多关于

全部展开

算法

批处理规范化操作规范化元素x首先计算输入的平均值μB和方差σB2.在每个通道的空间、时间和观测维度上独立进行。然后,它计算标准化激活,如下所示:

x ^ = x μ B σ B 2. + ϵ ,

在哪里ϵ是一个常数,在方差非常小时可提高数值稳定性。

为了考虑到均值为零和单位方差为零的输入对于批次标准化后的操作不是最优的可能性,批次标准化操作使用转换进一步转移和缩放激活

Y = γ x ^ + β ,

的偏移量β比例因子γ是在网络培训期间更新的可学习参数。

要对训练后的网络进行预测,批处理归一化需要固定的均值和方差对数据进行归一化。这个固定的平均值和方差可以从训练后的训练数据中计算出来,或者在训练期间使用运行统计计算来近似。

如果“BatchNormalizationStatistics”训练方法是“移动”,然后软件使用运行估计值近似训练期间的批量标准化统计数据,并在训练后设置受训男子TrainedVariance属性的最新值的移动估计的平均值和方差,分别。

如果“BatchNormalizationStatistics”训练方法是“人口”,则在网络训练结束后,软件再次对数据进行遍历,并设置受训男子TrainedVariance属性分别为从整个训练数据集计算的均值和方差。

该层使用受训男子TrainedVariance在预测期间对输入进行归一化。

参考文献

[1] Ioffe、Sergey和Christian Szegedy。“批量规范化:通过减少内部协变量变化来加速深度网络培训。”预印本,2015年3月2日提交。https://arxiv.org/abs/1502.03167.

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

GPU的代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

在R2017b中引入