主要内容

batchnorm

为每个通道独立规范化数据在所有观测

自从R2019b

描述

批处理规范化操作可实现输入数据在所有观测每个通道独立。加快卷积神经网络的训练,减少对网络的初始化,使用批量规范化卷积和非线性等操作线性整流函数(Rectified Linear Unit)

正常化后,操作改变输入可学的抵消β可学的比例因子和尺度γ

batchnorm功能适用于批量标准化操作dlarray数据。使用dlarray更易于处理高维数据的对象允许您标签的尺寸。例如,您可以标签尺寸对应于空间,时间,频道,使用批处理维度“S”,“T”,“C”,“B”标签,分别。未指明的和其他维度,使用“U”标签。为dlarray对象的函数操作特定的尺寸,你可以指定尺寸标签的格式dlarray直接对象,或通过使用DataFormat选择。

请注意

申请批内规范化layerGraph对象或数组,使用batchNormalizationLayer

例子

Y= batchnorm (X,抵消,scaleFactor)批处理规范化操作适用于输入数据X使用输入数据的总体均值和方差和指定的偏移量和比例因子。

函数使在规范化“年代”(空间),“T”(时间),“B”(批处理),“U”(不明)的尺寸X每个通道的“C”独立(频道)维度。

无格式的输入数据,使用“DataFormat”选择。

(Y,popMu,popSigmaSq)= batchnorm (X,抵消,scaleFactor)适用于批量标准化操作并返回输入数据的总体均值和方差X

例子

(Y,updatedMu,updatedSigmaSq)= batchnorm (X,抵消,scaleFactor,runningMu,runningSigmaSq)适用于批量标准化操作并返回更新后的移动均值和方差的统计数据。runningMurunningSigmaSq之前的培训后的均值和方差值迭代,分别。

使用这种语法来维持运行值的均值和方差统计在训练。当你已经完成了培训,使用最后的更新值的均值和方差批规范化操作在预测和分类。

Y= batchnorm (X,抵消,scaleFactor,trainedMu,trainedSigmaSq)适用于批量标准化操作使用的意思trainedMu和方差trainedSigmaSq

使用这种语法在分类和预测,trainedMutrainedSigmaSq最终值的均值和方差完成培训后,分别。

(___)= batchnorm (___、“DataFormat”FMT)批处理规范化操作适用于非格式化输入数据与所指定的格式FMT使用任何输入或输出组合在以前的语法。输出Y是一个非格式化dlarray对象维度的顺序一样X。例如,“DataFormat”、“SSCB”指定数据为二维图像输入的格式“SSCB”(空间、空间、通道、批)。

(___)= batchnorm (___,名称,值)使用一个或多个指定附加选项名称-值对参数。例如,“MeanDecay”, 0.3集的衰变速率移动平均计算。

例子

全部折叠

创建一个格式化的dlarray对象包含了一批128 28-by-28图像3通道。指定的格式“SSCB”(空间、空间、通道、批)。

miniBatchSize = 128;inputSize = 28 [28];numChannels = 3;X =兰特(inputSize (1) inputSize (2), numChannels, miniBatchSize);dlX = dlarray (X,“SSCB”);

视图的大小和格式输入数据。

大小(dlX)
ans =1×4128年28日28日3
dim (dlX)
ans = ' SSCB '

初始化批量标准化的规模和抵消。对于规模,指定一个向量的。抵消,指定一个零的向量。

scaleFactor = 1 (numChannels, 1);抵消= 0 (numChannels, 1);

应用批规范化操作使用batchnorm函数和返回mini-batch统计数据。

[海底,μ,sigmaSq] = batchnorm (dlX、抵消、scaleFactor);

视图的大小和格式输出海底

大小(海底)
ans =1×4128年28日28日3
dim(海底)
ans = ' SSCB '

查看mini-batch意味着μ

μ
μ=3×10.4998 0.4993 0.5011

查看mini-batch方差sigmaSq

sigmaSq
sigmaSq =3×10.0831 0.0832 0.0835

使用batchnorm功能正常化几批数据后更新整个数据集的统计每个正常化。

创建三个批次的数据。10 *随机阵列的数据由五个频道。每一批包含20个观察。第二和第三批由一个倍增因子的比例1.52.5分别,所以数据集合的均值随每一批。

身高= 10;宽度= 10;numChannels = 5;观察= 20;X1 =兰德(高度、宽度、numChannels观察);dlX1 = dlarray (X1,“SSCB”);X2 = 1.5 *兰德(高度、宽度、numChannels观察);dlX2 = dlarray (X2,“SSCB”);X3 = 2.5 *兰德(高度、宽度、numChannels观察);dlX3 = dlarray (X3,“SSCB”);

创建可学的参数。

抵消= 0 (numChannels, 1);规模= 1 (numChannels, 1);

规范化的第一批数据dlX1使用batchnorm。获得的值均值和方差的这批输出。

[dlY1,μ,sigmaSq] = batchnorm (dlX1、抵消、规模);

第二批数据规范化dlX2。使用μsigmaSq作为输入获得的值的均值和方差数据批量dlX1dlX2

[dlY2, datasetMu datasetSigmaSq] = batchnorm (dlX2、抵消、规模、μsigmaSq);

规范化的最后一批数据dlX3。更新数据集的统计数据datasetMudatasetSigmaSq获得的值的均值和方差在批次的所有数据dlX1,dlX2,dlX3

[dlY3, datasetMuFull datasetSigmaSqFull] = batchnorm (dlX3、抵消、规模、datasetMu datasetSigmaSq);

观察到的变化意味着每个通道的每一批规范化。

情节([μdatasetMu datasetMuFull])传说(“通道”+字符串(1:5),“位置”,“东南”)xticks((1 2 3))包含(“批次的数量”)xlim ([0.9 - 3.1]) ylabel (“每通道的意思”)标题(“数据集的意思”)

图包含一个坐标轴对象。坐标轴对象与标题数据集的意思是,包含数量的批次,ylabel每通道的意思是包含5线类型的对象。这些对象代表通道,通道2,通道3,第四频道,频道5。

输入参数

全部折叠

输入数据,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。

如果X是一个非格式化dlarray或数值数组,那么您必须指定使用的格式DataFormat选择。如果X是一个数值数组,然后要么scaleFactor抵消必须是一个dlarray对象。

X必须有一个“C”(频道)维度。

抵消β,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组和一个nonsingleton维度尺寸匹配的大小“C”(频道)维度的输入X

如果抵消是一个格式化的dlarray对象,然后nonsingleton维度必须有标签“C”(通道)。

比例因子γ,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组和一个nonsingleton维度尺寸匹配的大小“C”(频道)维度的输入X

如果scaleFactor是一个格式化的dlarray对象,然后nonsingleton维度必须有标签“C”(通道)。

运行的价值意味着统计,指定为一个数值向量的长度相同“C”输入数据的维数。

保持运行值意味着在训练,提供runningMu随着updatedMu以前的训练迭代的输出。

数据类型:|

运行值的方差统计,指定为一个数值向量的长度相同“C”输入数据的维数。

保持运行值方差在训练,提供runningSigmaSq随着updatedSigmaSq以前的训练迭代的输出。

数据类型:|

最终的价值意味着统计训练后,指定为一个数值向量的长度相同“C”输入数据的维数。

在分类和预测,提供trainedMu随着updatedMu最终的输出训练迭代。

数据类型:|

最终值的方差统计训练后,指定为一个数值向量的长度相同“C”输入数据的维数。

在分类和预测,提供trainedSigmaSq随着updatedSigmaSq最终的输出训练迭代。

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“MeanDecay”, 0.3,“VarianceDecay”, 0.5集移动平均的衰变率的均值和方差计算几个批次的数据0.30.5,分别。

维度的非格式化输入数据,指定为一个特征向量或字符串标量FMT为每个维度的数据提供一个标签。

当你指定的格式dlarray对象,每个字符为每个维度的数据提供了一个标签,必须这些选项之一:

  • “S”——空间

  • “C”——频道

  • “B”批处理(例如,样品和观察)

  • “T”时间(例如,时间序列的步骤)

  • “U”——未指明的

您可以指定多个维度标签“S”“U”。您可以使用标签“C”,“B”,“T”最多一次。

您必须指定DataFormat当输入数据不是一个格式化的dlarray

数据类型:字符|字符串

常数添加mini-batch方差,指定为一个积极的标量。

软件将这个常数添加到mini-batch方差标准化之前确保数值稳定,避免除零。

R2023a之前:ε必须大于或等于1 e-5

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

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

功能更新移动平均值

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

在哪里 μ * 表示更新的意思updatedMu, λ μ 表示的意思是衰减值“MeanDecay”, μ ^ 表示输入数据的均值 μ 表示当前值的意思μ

数据类型:|

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

功能更新移动使用方差值

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

在哪里 σ 2 * 表示更新后的方差updatedSigmaSq, λ σ 2 表示方差衰减值“VarianceDecay”, σ 2 ^ 表示输入数据的方差 σ 2 表示当前值的方差sigmaSq

数据类型:|

输出参数

全部折叠

归一化数据,作为一个返回dlarray基础数据类型一样X

如果输入数据X是一个格式化的dlarray,然后Y有相同的格式吗X。如果没有一个格式化的输入数据dlarray,然后Y是一个非格式化dlarray相同的尺寸订单作为输入数据。

输出的大小Y匹配输入的大小X

每通道的输入数据,返回一个数字列向量长度相等的大小“C”输入数据的维数。

每通道输入数据的方差,作为一个数字列向量长度等于返回的大小“C”输入数据的维数。

更新统计,作为数字矢量长度等于返回的大小“C”输入数据的维数。

功能更新移动平均值

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

在哪里 μ * 表示更新的意思updatedMu, λ μ 表示的意思是衰减值“MeanDecay”, μ ^ 表示输入数据的均值 μ 表示当前值的意思μ

更新方差统计,作为数字矢量长度等于返回的大小“C”输入数据的维数。

功能更新移动使用方差值

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

在哪里 σ 2 * 表示更新后的方差updatedSigmaSq, λ σ 2 表示方差衰减值“VarianceDecay”, σ 2 ^ 表示输入数据的方差 σ 2 表示当前值的方差sigmaSq

算法

批处理规范化操作可实现元素x的输入,首先计算的意思μB和方差σB2在空间、时间和观察每个通道独立维度。然后,计算归一化激活

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

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

允许输入的可能性为零均值和单位方差不是最佳的操作遵循批正常化,批处理规范化操作进一步转变和尺度转换激活使用

y = γ x ^ + β ,

的偏移量β和规模因素γ在网络训练可学的参数更新。

进行预测和网络训练后,批规范化需要一个固定的均值和方差标准化数据。这个固定的均值和方差可以计算从训练数据训练后,或近似在训练使用运行统计计算。

扩展功能

版本历史

介绍了R2019b

全部展开