主要内容

batchnorm

对每个信道的所有观测结果分别进行归一化

描述

批处理归一化操作将每个通道的所有观测数据独立地归一化。为了加快卷积神经网络的训练速度,降低对网络初始化的敏感性,在卷积和非线性运算之间采用批归一化

在归一化之后,操作通过可学习的偏移移动输入β并通过学习的比例因子来缩放它γ.

batchnorm函数将批标准化操作应用于dlarray数据。使用dlarray通过允许您标记尺寸,对象使高维数据更容易。例如,您可以使用使用的标记对应于空间,时间,频道和批处理尺寸的维度标记“年代”“T”'C', 和'B'标签,分别。对于未指定的和其他维度,请使用“U”标签。为了dlarray通过特定尺寸运行的对象功能,可以通过格式化维度标签来指定维度标签dlarray对象,或使用'datomformat'选项。

请注意

在a内应用批量归一化分层图对象或数组,使用BatchnormalizationLayer.

例子

海底= Batchnorm(dlX抵消scaleFactor对输入数据应用批标准化操作dlX以及使用指定的偏移量和比例因子进行变换。

函数对“年代”(空间),“T”(时间),'B'(批量),和“U”(未指定的)尺寸dlX中的每个通道'C'(频道)尺寸独立。

对于未格式化的输入数据,请使用'datomformat'选项。

海底popmu.popsigmasq.] = Batchnorm(dlX抵消scaleFactor还返回输入数据的群体平均值和方差dlX

海底= Batchnorm(dlX抵消scaleFactorsigmasq.使用均值和方差应用批归一化操作sigmasq.,分别。

例子

海底updatedMuupdatedsigmasq.] = Batchnorm(dlX抵消scaleFactorsigmasq.使用均值和方差应用批归一化操作sigmasq.分别以及还返回更新的移动均值和方差统计。

使用此语法在培训期间维护均值和方差统计数据的运行值。使用最终更新值的平均值和方差以进行预测和分类。

___] = Batchnorm(___,'datomformat',fmt)对使用指定格式的未格式化输入数据应用批标准化操作FMT使用以前的任何语法。输出海底是一个无格式化的人dlarray对象的尺寸顺序相同dlX.例如,“DataFormat”、“SSCB”指定具有格式的2-D图像输入的数据'SSCB'(空间,空间,频道,批量)。

___] = Batchnorm(___名称,值除了以前语法中的输入参数之外,使用一个或多个名称值对参数指定选项。例如,'意味着',0.3设置移动平均计算的衰减率。

例子

全部折叠

创建格式化dlarray包含具有3个通道的批次128个28-×28图像的对象。指定格式'SSCB'(空间,空间,频道,批量)。

minibatchsize = 128;输入= [28 28];numchannels = 3;x = rand(输入(1),输入(2),NumChannels,Minibatchsize);dlx = dlarray(x,'SSCB');

查看输入数据的大小和格式。

大小(dlX)
ans =1×428 28 3 128
昏暗(DLX)
ans = ' SSCB '

初始化批量归一化的刻度和偏移量。对于缩放,指定一个矢量。对于偏置,请指定零的向量。

Scalefactor = =那些(NumChannels,1);offset =零(NumChannels,1);

应用批量归一化操作batchnorm函数并返回迷你批处理统计信息。

[DLY,MU,SIGMASQ] = Batchnorm(DLX,偏移,Scalefactor);

查看输出的大小和格式海底

大小(海底)
ans =1×428 28 3 128
dim(海底)
ans = ' SSCB '

查看mini-batch均值

穆=3×10.4998 0.4993 0.5011

查看迷你批处理方差sigmasq.

sigmasq.
sigmaSq =3×10.0831 0.0832 0.0835

使用batchnorm功能,以规范化数批数据和更新后的整个数据集的统计每次规范化。

创建三个数据。数据包括10×10随机阵列,其中五个通道。每批批次包含20个观察结果。第二批次由乘法系数缩放1.52.5,所以数据集的平均值随着每批数据的增加而增加。

高度= 10;宽度= 10;频道= 5;观察= 20;x1 = rand(高度,宽度,频道,观察);dlx1 = dlarray(x1,'SSCB');x2 = 1.5 * rand(高度,宽度,频道,观察);dlx2 = dlarray(x2,'SSCB');X3 = 2.5 *兰德(高度、宽度、通道观测);dlX3 = dlarray (X3,'SSCB');

创建学习参数。

offset =零(频道,1);SCALE = =那些(频道,1);

归一化第一批次数据,DLX1,使用batchnorm.获得此批的均值和方差值作为输出。

[dly1,mu,sigmasq] = Batchnorm(DLX1,偏移,刻度);

标准化第二批数据,dlX2.使用sigmasq.作为输入,以获得批次中数据的组合均值和方差的值dlX1dlX2

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

正常化最终数据,dlX3.更新数据集统计信息datasetmu.datasetSigmaSq以批量获得所有数据的组合均值和方差的值dlX1dlX2, 和dlX3

[dly3,dataSetmufull,datasetsigmasqfull] = batchnorm(dlx3,偏移量,刻度,datasetmu,datasetsigmasq);

每批处理归一化,请遵守每个通道的平均值的变化。

绘图([mu'; datasetmu'; datasetmufull'])图例({'频道1''频道2'通道3的“第四频道”“第5频道”},'地点''东南') xticks([1 2 3])'批次数量')XLIM([0.9 3.1])Ylabel(“每通道的意思”) 标题('数据集是含义'

图包含轴。具有标题数据集的轴用均值包含5个类型的类型。这些对象表示信道1,通道2,信道3,信道4,信道5。

输入参数

全部折叠

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

如果dlX是一个无格式化的人dlarray或数字数组,则必须使用'datomformat'选项。如果dlX是数字数组吗scaleFactor或者抵消必须是一个dlarray目的。

dlX必须有一个'C'(频道)维度。

抵消β,指定为格式化的dlarray,一个非格式化dlarray或者一个数字数组,其中一个非星期线维度,大小与匹配的大小'C'(通道)输入的尺寸dlX

如果抵消是一个格式化的dlarray对象,那么Nonsingleton维度必须具有标签'C'(通道)。

比例因子γ.,指定为格式化的dlarray,一个非格式化dlarray或者一个数字数组,其中一个非星期线维度,大小与匹配的大小'C'(通道)输入的尺寸dlX

如果scaleFactor是一个格式化的dlarray对象,那么Nonsingleton维度必须具有标签'C'(通道)。

归一化的平均统计规定,指定为与相同长度的数字向量'C'输入数据的维度。

数据类型:单身的|双倍的

变量的长度相同的数值向量,用于标准化的方差统计量'C'输入数据的维度。

数据类型:单身的|双倍的

名称-值对的观点

指定可选的逗号分隔对名称,值论点。名称参数名和价值是相应的价值。名称必须出现在引号内。您可以按如下顺序指定几个名称和值对参数name1,value1,...,namen,valuen

例子:'意味着',0.3,'Variancedecay',0.5设置转移平均计算的衰减率,对几批数据的平均值和方差0.30.5,分别。

未格式化的输入数据的维度顺序,指定为逗号分隔对组成'datomformat'和一个字符矢量或标量FMT它为数据的每个维度提供一个标签。

当指定一个dlarray对象,每个字符为数据的每个维度提供标签,必须是以下内容之一:

  • “年代”- 空间

  • 'C'- 渠道

  • 'B'- 批次(例如,样品和观察)

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

  • “U”- 未指定

您可以指定标记的多个维度“年代”或者“U”.您可以使用标签'C''B', 和“T”最多一次。

您必须指定'datomformat'当输入数据未格式化时dlarray

例子:“DataFormat”、“SSCB”

数据类型:char|细绳

用于防止逐零错误的方差偏移,指定为逗号分隔的对'epsilon'和一个数字标量。指定的值必须大于1E-5.默认值为1E-5

数据类型:单身的|双倍的

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

函数使用更新移动平均值

μ. λ. μ. μ. + 1 - λ. μ. μ.

在哪里 μ. 表示更新的均值updatedMu λ. μ. 表示平均衰减值'意味着' μ. 表示输入数据的平均值, μ. 表示平均值的当前值

数据类型:单身的|双倍的

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

函数使用

σ. 2 λ. σ. 2 σ. 2 + 1 - λ. σ. 2 σ. 2

在哪里 σ. 2 表示更新的方差updatedsigmasq. λ. σ. 2 表示方差衰减值“VarianceDecay” σ. 2 表示输入数据的方差,以及 σ. 2 表示差异的当前值sigmasq.

数据类型:单身的|双倍的

输出参数

全部折叠

类型返回的规范化数据dlarray与相同的底层数据类型dlX

如果输入数据dlX是一个格式化的dlarray,然后海底有相同的格式dlX.如果输入数据不是格式化的dlarray,然后海底是一个无格式化的人dlarray维度顺序与输入数据相同。

输出的大小海底匹配输入的大小dlX

每个通道的输入数据的平均值,作为数字列向量返回,长度等于大小'C'输入数据的维度。

输入数据的每个通道方差,作为长度等于的数值列向量返回'C'输入数据的维度。

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

函数使用更新移动平均值

μ. λ. μ. μ. + 1 - λ. μ. μ.

在哪里 μ. 表示更新的均值updatedMu λ. μ. 表示平均衰减值'意味着' μ. 表示输入数据的平均值, μ. 表示平均值的当前值

更新的variance统计,作为数字矢量返回,长度等于大小'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