主要内容

BatchnormalizationLayer.

批量归一化层

描述

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

在归一化之后,该图层以学习的比例因子缩放输入γ并通过可学习的偏移来移动β

创建

描述

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

例子

= batchNormalizationLayer (名称,价值创建批量归一化层并设置可选训练有训练TrainedVariance埃斯利昂参数和初始化学习速度和正规化, 和名称属性使用一个或多个名称值对。例如,BatchnormalizationLayer('姓名','batchnorm')创建一个带有名称的批处理规范化层“batchnorm”

特性

全部展开

批量归一化

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

  • 对于2-D图像输入,一个大小的数字阵列1-by-1-by-NumChannels.

  • 对于3-D图像输入,1-×1-1-by-1-by-1-by-1-by-1-by-1的数字阵列数组NumChannels.

  • 对于特征或序列输入,大小的数字数组NumChannels.1

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

如果是'BatchnormalizationStatistics'训练方法是'人口'然后在网络训练完成后,软件通过数据一次通过数据并设置训练有训练TrainedVariance分别从整个训练数据集计算的平均值和方差。

该层使用了训练有训练TrainedVariance在预测期间规范化输入。

用于预测的variance统计,指定为以下之一:

  • 对于2-D图像输入,一个大小的数字阵列1-by-1-by-NumChannels.

  • 对于3-D图像输入,1-×1-1-by-1-by-1-by-1-by-1-by-1的数字阵列数组NumChannels.

  • 对于特征或序列输入,大小的数字数组NumChannels.1

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

如果是'BatchnormalizationStatistics'训练方法是'人口'然后在网络训练完成后,软件通过数据一次通过数据并设置训练有训练TrainedVariance分别从整个训练数据集计算的平均值和方差。

该层使用了训练有训练TrainedVariance在预测期间规范化输入。

常数添加到迷你批处理差异,指定为等于或大于或大于的数字标量1E-5

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

输入通道数,指定为'汽车'或者一个正整数。

此属性始终等于到图层的输入的通道数。如果NumChannels.等于'汽车',然后软件自动确定训练时通道数的正确值。

参数和初始化

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

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

  • 'zeros'- 用零初始化信道比例因子。

  • '窄正常'-初始化通道规模因子独立抽样从一个正态分布的零均值和标准偏差0.01。

  • 功能句柄 - 使用自定义功能初始化信道比例因子。如果指定函数句柄,则函数必须是表单Scale = Func(SZ),在那里SZ.是规模的大小。例如,看到指定自定义权重初始化功能

该层仅初始化信道比例因子规模财产是空的。

数据类型:字符|细绳|function_handle.

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

  • 'zeros'—初始化通道偏移量为0。

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

  • '窄正常'-初始化通道偏移独立采样从一个正态分布的零平均值和标准偏差0.01。

  • 功能句柄 - 使用自定义功能初始化频道偏移量。如果指定函数句柄,则函数必须是表单Offset = Func(SZ),在那里SZ.是规模的大小。例如,看到指定自定义权重初始化功能

该图层仅初始化频道偏移量时抵消财产是空的。

数据类型:字符|细绳|function_handle.

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

信道比例因子是可学习参数。培训网络时,如果规模是不是空的,然后Trainnetwork.用来规模属性作为初始值。如果规模是空的,然后Trainnetwork.使用指定的初始化程序ScaleInitializer

在培训时间,规模是以下其中之一:

  • 对于2-D图像输入,一个大小的数字阵列1-by-1-by-NumChannels.

  • 对于3-D图像输入,1-×1-1-by-1-by-1-by-1-by-1-by-1的数字阵列数组NumChannels.

  • 对于特征或序列输入,大小的数字数组NumChannels.1

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

频道偏移是可学习参数。培训网络时,如果抵消是不是空的,然后Trainnetwork.用来抵消属性作为初始值。如果抵消是空的,然后Trainnetwork.使用指定的初始化程序OffsetInitializer

在培训时间,抵消是以下其中之一:

  • 对于2-D图像输入,一个大小的数字阵列1-by-1-by-NumChannels.

  • 对于3-D图像输入,1-×1-1-by-1-by-1-by-1-by-1-by-1的数字阵列数组NumChannels.

  • 对于特征或序列输入,大小的数字数组NumChannels.1

移动平均值计算的衰减值,指定为介于之间的数值标量0.1

'BatchnormalizationStatistics'训练方法是'移动',在每次迭代时,该层使用

μ * = λ μ μ ^ + 1 - λ μ μ

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

如果是'BatchnormalizationStatistics'训练方法是'人口',则此选项无效。

数据类型:单身的|

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

'BatchnormalizationStatistics'训练方法是'移动',在每次迭代时,图层使用移动方差值更新

σ 2 * = λ σ 2 σ 2 ^ + 1 - λ σ 2 σ 2

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

如果是'BatchnormalizationStatistics'训练方法是'人口',则此选项无效。

数据类型:单身的|

学习速度和正规化

学习率因子为尺度因子,指定为非负标量。

该软件通过全局学习率乘以此因素来确定图层中的比例因子的学习率。例如,如果ScaleLearnratefactor.2然后,图层中的比例因子的学习率是当前全球学习率的两倍。该软件根据指定的设置确定全局学习速率培训选项功能。

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

该软件通过全局学习速率乘以此因素来确定层中偏移的学习速率。例如,如果offsetlearnratefactor.等于2然后,图层中偏移的学习率是当前全球学习率的两倍。该软件根据指定的设置确定全局学习速率培训选项功能。

L.2规模因子的正则化因子,指定为非负标量。

该软件将此因素乘以全球l2正则化因子确定图层中的比例因子的学习率。例如,如果尺寸尺寸是2,然后是l2对层中偏移量的正则化是全局L的两倍2正则化因素。您可以指定全球l2正则化因子使用培训选项功能。

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

该软件将此因素乘以全球l2正规化因子确定层中偏移中的学习速率。例如,如果OffsetL2Factor是2,然后是l2对层中偏移量的正则化是全局L的两倍2正则化因素。您可以指定全球l2正则化因子使用培训选项功能。

图层名称,指定为字符向量或字符串标量。要在图层图中包含一个图层,必须指定非空,唯一的图层名称。如果您使用该图层培训系列网络名称被设置为'',然后软件会自动为培训时间分配给图层的名称。

数据类型:字符|细绳

层的输入数。此图层仅接受单个输入。

数据类型:

图层的输入名称。此图层仅接受单个输入。

数据类型:细胞

图层的输出数。此图层仅具有单个输出。

数据类型:

图层的输出名称。此图层仅具有单个输出。

数据类型:细胞

例子

全部收缩

使用名称创建批量归一化层'bn1'

tallay = batchnormalizationlayer('名称''bn1'
TALLES = BATCHNORMALIZALLAYER具有属性:名称:'BN1'NUMCHANNELS:'AUTO'训练:[]培训variance:[] virtparameters意味着:0.1000 variancecay:0.1000 epsilon:1.0000E-05学习参数偏移量:[]缩放:[]显示所有属性

大批。

layers = [imageInputLayer([32 32 3])卷积2dlayer (3,16,“填充”1)BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'走吧',2)卷积2dlayer(3,32,“填充”,1)BatchnormalizationLayer Rublayer全连接列(10)SoftMaxLayer分类层]
图层= 11x1图层数组: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.和方差σB.2在每个通道的空间,时间和观察尺寸上独立地。然后,它计算规范化的激活

X 一世 ^ = X 一世 - μ B. σ B. 2 + ϵ

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

为了允许具有零均值和单位方差的输入的可能性对于跟随批量归一化的操作而不是最佳,批量归一化操作进一步换档并使用转换缩放激活

y 一世 = γ X ^ 一世 + β

哪里偏移β和规模因子γ是在网络培训期间更新的可学习参数。

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

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

如果是'BatchnormalizationStatistics'训练方法是'人口'然后在网络训练完成后,软件通过数据一次通过数据并设置训练有训练TrainedVariance分别从整个训练数据集计算的平均值和方差。

该层使用了训练有训练TrainedVariance在预测期间规范化输入。

参考文献

[1] Ioffe,Sergey和Christian Szegedy。“批量标准化:通过减少内部协变速转移加速深度网络培训。”预印本,arXiv: 1502.03167(2015)。

扩展能力

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

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

在R2017B中介绍