主要内容

batchNormalizationLayer

批处理规范化层

描述

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

归一化后,该层用一个可学习的比例因子对输入进行缩放γ然后用一个可学习偏移量平移它β

创建

描述

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

例子

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

属性

全部展开

批正常化

用于预测的平均统计量,指定为每个通道平均值的数字向量。

的类型取决于层输入的类型trainNetworkassembleNetworklayerGraph,dlnetwork函数自动将此属性重新塑造为以下大小:

层的输入 财产大小
功能的输入 NumChannels1
矢量序列输入
一维图像输入 1 -NumChannels
一维图像序列输入
二维图像输入 1-by-1-by -NumChannels
二维图像序列输入
三维图像输入 1-by-1-by-1-by -NumChannels
三维图像序列输入

如果BatchNormalizationStatistics培训选项为“移动”,然后软件在训练期间使用运行估计值逼近批归一化统计数据,并在训练后设置TrainedMean而且TrainedVariance属性分别为移动估计的均值和方差的最新值。

如果BatchNormalizationStatistics培训选项为“人口”,然后在网络训练结束后,软件再次遍历数据并设置TrainedMean而且TrainedVariance属性分别为从整个训练数据集计算出的平均值和方差。

该层使用TrainedMean而且TrainedVariance在预测过程中对输入进行归一化。

数据类型:|

用于预测的方差统计量,指定为每个通道方差值的数值向量。

的类型取决于层输入的类型trainNetworkassembleNetworklayerGraph,dlnetwork函数自动将此属性重新塑造为以下大小:

层的输入 财产大小
功能的输入 NumChannels1
矢量序列输入
一维图像输入 1 -NumChannels
一维图像序列输入
二维图像输入 1-by-1-by -NumChannels
二维图像序列输入
三维图像输入 1-by-1-by-1-by -NumChannels
三维图像序列输入

如果BatchNormalizationStatistics培训选项为“移动”,然后软件在训练期间使用运行估计值逼近批归一化统计数据,并在训练后设置TrainedMean而且TrainedVariance属性分别为移动估计的均值和方差的最新值。

如果BatchNormalizationStatistics培训选项为“人口”,然后在网络训练结束后,软件再次遍历数据并设置TrainedMean而且TrainedVariance属性分别为从整个训练数据集计算出的平均值和方差。

该层使用TrainedMean而且TrainedVariance在预测过程中对输入进行归一化。

数据类型:|

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

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

此属性是只读的。

输入通道的数量,指定为下列之一:

  • “汽车”-在训练时自动确定输入通道数。

  • 正整数-为指定的输入通道数量配置层。NumChannels并且层中输入数据的通道数量必须匹配。例如,如果输入是RGB图像,则NumChannels一定是3。如果输入是带有16个滤波器的卷积层的输出,则NumChannels必须是16岁。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

参数和初始化

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

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

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

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

  • 函数句柄——使用自定义函数初始化通道比例因子。如果指定了函数句柄,则该函数必须为Scale = func(sz),在那里深圳是秤的大小。有关示例,请参见指定自定义权重初始化函数

层只初始化通道比例因子时规模属性为空。

数据类型:字符|字符串|function_handle

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

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

  • “的”-用1初始化通道偏移量。

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

  • 函数句柄——使用自定义函数初始化通道偏移量。如果指定了函数句柄,则该函数必须为Offset = func(sz),在那里深圳是秤的大小。有关示例,请参见指定自定义权重初始化函数

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

数据类型:字符|字符串|function_handle

渠道规模因子γ,指定为数值向量。

信道尺度因子是可学习的参数。当你训练一个网络时,如果规模非空吗trainNetwork使用规模属性作为初始值。如果规模那么是空的trainNetwork所指定的初始化式ScaleInitializer

的类型取决于层输入的类型trainNetworkassembleNetworklayerGraph,dlnetwork函数自动将此属性重新塑造为以下大小:

层的输入 财产大小
功能的输入 NumChannels1
矢量序列输入
一维图像输入 1 -NumChannels
一维图像序列输入
二维图像输入 1-by-1-by -NumChannels
二维图像序列输入
三维图像输入 1-by-1-by-1-by -NumChannels
三维图像序列输入

数据类型:|

通道补偿β,指定为数值向量。

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

的类型取决于层输入的类型trainNetworkassembleNetworklayerGraph,dlnetwork函数自动将此属性重新塑造为以下大小:

层的输入 财产大小
功能的输入 NumChannels1
矢量序列输入
一维图像输入 1 -NumChannels
一维图像序列输入
二维图像输入 1-by-1-by -NumChannels
二维图像序列输入
三维图像输入 1-by-1-by-1-by -NumChannels
三维图像序列输入

数据类型:|

移动平均值计算的衰减值,指定为之间的数值标量0而且1

BatchNormalizationStatistics培训选项为“移动”,在每次迭代中,该层使用更新移动平均值

μ λ μ μ + 1 λ μ μ

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

如果BatchNormalizationStatistics培训选项为“人口”,则此选项无效。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用于移动方差计算的衰减值,指定为之间的数值标量0而且1

BatchNormalizationStatistics培训选项为“移动”,在每次迭代中,该层使用更新移动方差值

σ 2 λ σ 2 σ 2 + 1 λ σ 2 σ 2

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

如果BatchNormalizationStatistics培训选项为“人口”,则此选项无效。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

学习率和正则化

缩放因子的学习率因子,指定为非负标量。

该软件将该因子乘以全局学习率,以确定一层中尺度因子的学习率。例如,如果ScaleLearnRateFactor2,则该层中尺度因子的学习率为当前全局学习率的两倍。属性指定的设置来确定全局学习率trainingOptions函数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

该软件将该因子乘以全局学习率,以确定一层中偏移量的学习率。例如,如果OffsetLearnRateFactor2,则该层中偏移量的学习率为当前全局学习率的两倍。属性指定的设置来确定全局学习率trainingOptions函数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

层名,指定为字符向量或字符串标量。为数组输入时,trainNetworkassembleNetworklayerGraph,dlnetwork函数自动为具有该名称的层分配名称

数据类型:字符|字符串

此属性是只读的。

该层的输入数量。该层只接受单个输入。

数据类型:

此属性是只读的。

输入层的名称。该层只接受单个输入。

数据类型:细胞

此属性是只读的。

层的输出数量。这个图层只有一个输出。

数据类型:

此属性是只读的。

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

数据类型:细胞

例子

全部折叠

用名称创建一个批处理规范化层“BN1”

层= batchNormalizationLayer(“名字”“BN1”
layer = BatchNormalizationLayer with properties: Name: 'BN1' NumChannels: 'auto'超参数MeanDecay: 0.1000 VarianceDecay: 0.1000 Epsilon: 1.0000 -05 Learnable Parameters偏移量:[]Scale: [] State Parameters TrainedMean: [] TrainedVariance:[]显示所有属性

中包含批处理规范化层数组中。

图层= [imageInputLayer([32 32 3])卷积2dlayer (3,16,“填充”,1) maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”,1) batchNormalizationLayer reluLayer fullyConnectedLayer(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“批量标准化批量标准化8”ReLU ReLU 9“完全连接10完全连接层”Softmax Softmax 11”分类输出

算法

全部展开

参考文献

约菲、谢尔盖和克里斯蒂安·塞格迪。“批处理归一化:通过减少内部协变量移位加速深度网络训练。”预印本,2015年3月2日提交。https://arxiv.org/abs/1502.03167。

扩展功能

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

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

版本历史

在R2017b中引入

Baidu
map