groupNormalizationLayer
描述
组规范化层对每个观测值的通道分组子集上的小批数据进行独立规范化。为了加快卷积神经网络的训练速度,降低对网络初始化的敏感性,可以在卷积层和非线性之间使用群归一化层,如ReLU层。
归一化后,该层使用可学习的比例因子对输入进行缩放γ通过一个可学习的偏移量来移动它β。
创建
描述
输入参数
numGroups
- - - - - -组数
正整数|所有渠道的
|“channel-wise”
输入数据通道划分的组数,指定为下列之一:
正整数-将入站通道划分为指定数量的组。指定的组数必须与输入数据的通道数完全相除。
所有渠道的
-将所有入站通道分组为一个组。这个操作也被称为层规范化。另外,使用layerNormalizationLayer
。“channel-wise”
-将所有传入通道视为单独的组。此操作也称为实例规范化。另外,使用instanceNormalizationLayer
。
属性
集团标准化
ε
- - - - - -要添加到小批方差的常量
1 e-5
(默认)|积极的标量
要添加到小批差异的常量,指定为正标量。
该软件在归一化之前将该常数添加到小批方差中,以确保数值稳定性并避免被零除。
R2023a之前:ε
必须大于等于1 e-5
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
NumChannels
- - - - - -输入通道数
“汽车”
(默认)|正整数
该属性是只读的。
输入通道数,指定为下列之一:
“汽车”
-在训练时自动确定输入通道的数量。正整数-为指定数量的输入通道配置层。
NumChannels
并且层输入数据的通道数必须匹配。例如,如果输入是RGB图像,则NumChannels
一定是3。如果输入是包含16个滤波器的卷积层的输出,则NumChannels
一定是16岁。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
参数和初始化
ScaleInitializer
- - - - - -初始化通道比例因子的函数
“的”
(默认)|“narrow-normal”
|函数处理
函数初始化通道比例因子,指定为以下之一:
“的”
—初始化通道比例因子为1。“零”
—初始化通道比例因子为零。“narrow-normal”
—通过从平均值为零、标准差为0.01的正态分布中独立采样来初始化通道比例因子。函数句柄-使用自定义函数初始化通道比例因子。如果指定函数句柄,则该函数必须为
Scale = func(sz)
,在那里深圳
是天平的大小。使用示例请参见指定自定义权重初始化函数。
时,层只初始化通道比例因子规模
房产是空的。
数据类型:字符
|字符串
|function_handle
OffsetInitializer
- - - - - -初始化通道偏移量的函数
“零”
(默认)|“的”
|“narrow-normal”
|函数处理
函数初始化通道偏移量,指定为以下之一:
“零”
—用零初始化通道偏移量。“的”
—将通道偏移量初始化为1。“narrow-normal”
—通过从平均值为零,标准差为0.01的正态分布中独立采样来初始化通道偏移。函数句柄-使用自定义函数初始化通道偏移量。如果指定函数句柄,则该函数必须为
Offset = func(sz)
,在那里深圳
是天平的大小。使用示例请参见指定自定义权重初始化函数。
层只初始化通道偏移抵消
房产是空的。
数据类型:字符
|字符串
|function_handle
规模
- - - - - -渠道比例因子
[]
(默认)|数字数组
渠道比例因子γ,指定为数值数组。
通道尺度因子是可学习的参数。当你用trainNetwork
函数或初始化dlnetwork
对象,如果规模
是非空的,则软件使用规模
属性作为初始值。如果规模
为空,则软件使用由ScaleInitializer
。
根据层输入的类型trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数会自动重塑此属性,使其具有以下大小:
层的输入 | 财产大小 |
---|---|
功能的输入 | NumChannels 1 |
矢量序列输入 | |
一维图像输入(因为R2023a) |
1 -NumChannels |
1-D图像序列输入(因为R2023a) |
|
二维图像输入 | 1-by-1-by -NumChannels |
二维图像序列输入 | |
三维图像输入 | 1-by-1-by-1-by -NumChannels |
三维图像序列输入 |
数据类型:单
|双
抵消
- - - - - -通道补偿
[]
(默认)|数字数组
通道补偿β,指定为数字向量。
通道偏移量是可学习的参数。当你用trainNetwork
函数或初始化dlnetwork
对象,如果抵消
是非空的,则软件使用抵消
属性作为初始值。如果抵消
为空,则软件使用由OffsetInitializer
。
根据层输入的类型trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数会自动重塑此属性,使其具有以下大小:
层的输入 | 财产大小 |
---|---|
功能的输入 | NumChannels 1 |
矢量序列输入 | |
一维图像输入(因为R2023a) |
1 -NumChannels |
1-D图像序列输入(因为R2023a) |
|
二维图像输入 | 1-by-1-by -NumChannels |
二维图像序列输入 | |
三维图像输入 | 1-by-1-by-1-by -NumChannels |
三维图像序列输入 |
数据类型:单
|双
学习率和正则化
ScaleLearnRateFactor
- - - - - -学习率因子代替比例因子
1
(默认)|负的标量
比例因子的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定一层中尺度因子的学习率。例如,如果ScaleLearnRateFactor
是2
,则层中尺度因子的学习率是当前全局学习率的两倍。软件根据指定的设置确定全局学习率trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OffsetLearnRateFactor
- - - - - -偏移量的学习率因子
1
(默认)|负的标量
偏移量的学习率因子,指定为非负标量。
软件将这个因子乘以全局学习率来确定一层中偏移量的学习率。例如,如果OffsetLearnRateFactor
是2
,则层中偏移量的学习率是当前全局学习率的两倍。软件根据指定的设置确定全局学习率trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ScaleL2Factor
- - - - - -l2比例因子的正则化因子
1
(默认)|负的标量
l2比例因子的正则化因子,指定为非负标量。
软件将这个因子乘以全局的L2正则化因子来确定一层中尺度因子的学习率。例如,如果ScaleL2Factor
是2
,然后是L。2层中偏移量的正则化是全局L的两倍2正则化因子。您可以指定全局的L2正则化因子trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OffsetL2Factor
- - - - - -l2偏移量的正则化因子
1
(默认)|负的标量
l2偏移量的正则化因子,指定为非负标量。
软件将这个因子乘以全局的L2正则化因子来确定层中偏移量的学习率。例如,如果OffsetL2Factor
是2
,然后是L。2层中偏移量的正则化是全局L的两倍2正则化因子。您可以指定全局的L2正则化因子trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
层
名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
图层名称,指定为字符向量或字符串标量。为层
数组输入trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数会自动将名称分配给具有该名称的层”
。
数据类型:字符
|字符串
NumInputs
- - - - - -输入数
1
(默认)
该属性是只读的。
层的输入数。这一层只接受一个输入。
数据类型:双
InputNames
- - - - - -输入名字
{"在"}
(默认)
该属性是只读的。
输入图层的名称。这一层只接受一个输入。
数据类型:细胞
NumOutputs
- - - - - -输出数量
1
(默认)
该属性是只读的。
层的输出数。这一层只有一个输出。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)
该属性是只读的。
输出图层的名称。这一层只有一个输出。
数据类型:细胞
例子
创建组规范化图层
创建一个组规范化层,对跨三组通道的传入数据进行规范化。命名图层“groupnorm”
。
layer = groupNormalizationLayer(3,“名字”,“groupnorm”)
layer = GroupNormalizationLayer with properties: Name: 'groupnorm' NumChannels: 'auto' Hyperparameters NumGroups: 3 Epsilon: 1.0000e-05可学习参数Offset: [] Scale:[]显示所有属性
在a中包含组规范化层层
数组中。将传入的20个通道归一化为四组。
layers = [imageInputLayer([28 28 3]) convolution2dLayer(5,20) groupNormalizationLayer(4) reluLayer maxPooling2dLayer(2,“步”,2) fulllyconnectedlayer (10) softmaxLayer classificationLayer]
layers = 8x1 Layer array with layers: 1 " Image Input 28x28x3图像,'zerocenter'归一化2 " 2d Convolution 20个5x5卷积,stride[1 1]和padding [0 0 0 0] 3 " Group normalization Group normalization 4 " ReLU ReLU 5 " 2d Max Pooling 2x2 Max Pooling, stride[2 2]和padding [0 0 0 0] 6 " Fully Connected 10 Fully Connected Layer 7 " Softmax Softmax 8 " Classification Output crossentropyex
更多关于
组归一化层
组规范化层将输入数据的通道划分为组,并对每个组中的激活进行规范化。为了加快卷积神经网络的训练速度并降低对网络初始化的敏感性,可以在卷积层和非线性之间使用群归一化层,例如ReLU层。
您还可以使用组规范化层来执行层规范化或实例规范化。层规范化在单个观察中组合并规范化所有通道的激活。实例规范化分别规范化观察的每个通道的激活。
该层首先通过减去组均值并除以组标准差将每个组的激活归一化。然后,该层通过一个可学习的偏移量来移动输入β然后用一个可学习的比例因子进行缩放γ。
组归一化层通过神经网络对激活和梯度传播进行归一化,使网络训练成为一个更容易的优化问题。为了充分利用这一事实,你可以尝试提高学习速度。由于优化问题更容易,参数更新可以更大,网络可以更快地学习。你也可以试着减少L2放弃正则化。
您可以使用组规范化层来代替批规范化层。这样做在小批量训练时特别有用,因为它可以增加训练的稳定性。
算法
组归一化层
组规范化操作对元素进行规范化x我通过首先计算平均值来计算输入μG和方差σG2在空间,时间和分组子集的通道尺寸为每个观测独立。然后,它计算归一化激活为
在哪里ϵ是在方差很小时提高数值稳定性的常数。为了允许具有零平均值和单位方差的输入对于遵循组归一化的操作不是最佳的可能性,组归一化操作使用转换进一步移动和缩放激活
其中偏移量β比例因子γ是在网络训练过程中更新的可学习参数。
图层输入和输出格式
层数组或层图中的层以格式化的方式将数据传递给后续层dlarray
对象。的格式dlarray
对象是一个字符串,其中每个字符描述数据的相应维度。格式由以下一个或多个字符组成:
“S”
——空间“C”
——频道“B”
——批“T”
——时间“U”
——未指明的
例如,表示为4d数组的二维图像数据,其中前两个维度对应于图像的空间维度,第三个维度对应于图像的通道,第四个维度对应于批处理维度,可以描述为具有格式“SSCB”
(空间、空间、通道、批量)。
你可以与它们互动dlarray
对象在自动区分工作流中,例如开发自定义层,使用functionLayer
对象,或使用向前
和预测
功能与dlnetwork
对象。
的支持输入格式金宝appGroupNormalizationLayer
对象和相应的输出格式。如果将层的输出传递给不继承自的自定义层nnet.layer.Formattable
类,或者FunctionLayer
对象。Formattable
属性设置为0
(false),则该层接收一个未格式化的dlarray
对象,其维度顺序与该表中的格式相对应。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在dlnetwork
对象,GroupNormalizationLayer
对象还支持这些输入和输出格金宝app式组合。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
|
|
参考文献
吴宇欣,何开明。“组织正常化。”预印本提交2018年6月11日。https://arxiv.org/abs/1803.08494。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
版本历史
在R2020b中引入MATLAB命令
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。