主要内容

groupNormalizationLayer

组归一化层

描述

分组归一层对每个观测数据在分组的通道子集上单独归一小批数据。为了加快卷积神经网络的训练并降低对网络初始化的敏感性,在卷积层和非线性层之间使用组归一化层,如ReLU层。

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

创建

描述

例子

= groupNormalizationLayer (numGroups创建一个组规范化层。

例子

= groupNormalizationLayer (numGroups名称,值创建一个组规范化层,并设置可选‘ε’参数和初始化学习率和正则化,的名字使用一个或多个名称-值参数的属性。您可以指定多个名称-值参数。将每个属性名用引号括起来。

输入参数

全部展开

将输入数据的通道划分到的组数,指定为下列之一:

  • 正整数—输入通道划分为指定数量的组。指定的组数必须与输入数据的通道数精确相除。

  • 所有渠道的-将所有传入通道归为一个组。这个操作也称为层归一化。另外,使用layerNormalizationLayer

  • “channel-wise”-将所有传入通道单独处理。此操作也称为实例规范化。另外,使用instanceNormalizationLayer

属性

全部展开

集团标准化

要添加到小批方差中的常数,指定为等于或大于的数值标量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

在训练时,规模是下列之一:

  • 对于2-D图像输入,大小为1 × 1 × -的数值数组NumChannels

  • 对于3-D图像输入,大小为1 × 1 × 1 × -的数值数组NumChannels

  • 对于特征或序列输入,一种大小的数字数组NumChannels1

数据类型:|

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

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

在训练时,抵消是下列之一:

  • 对于2-D图像输入,大小为1 × 1 × -的数值数组NumChannels

  • 对于3-D图像输入,大小为1 × 1 × 1 × -的数值数组NumChannels

  • 对于特征或序列输入,一种大小的数字数组NumChannels1

数据类型:|

学习率和正则化

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

该软件将该因子乘以全局学习率,以确定一层中尺度因子的学习率。例如,如果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函数自动为具有name的层分配名称

数据类型:字符|字符串

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:细胞

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:细胞

例子

全部折叠

创建一个组规范化层,用于规范化跨三组通道的传入数据。命名图层“groupnorm”

层= groupNormalizationLayer(3,“名字”“groupnorm”
Name: 'groupnorm' NumChannels: 'auto'超参数NumGroups: 3 Epsilon: 1.0000 -05 Learnable Parameters偏移量:[]比例:[]显示所有属性

类中包含组规范化层数组中。将传入的20个信道归一化,分为4组。

layers = [imageInputLayer([28 28 3]) convolution2dLayer(5,20) groupNormalizationLayer(4) reluLayer maxPooling2dLayer(2,“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
2 " Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0 0] 3 " Group normalization Group normalization 4 " ReLU ReLU 5 " Max Pooling 2x2 Max Pooling with stride [2 2] and padding [0 0 0 0 0] 6 " Fully Connected 10 Fully Connected Layer 7 " Softmax Softmax 8 " Classification Output crossentropyex

更多关于

全部展开

算法

分组规范化操作将元素规范化x首先计算平均值μG和方差σG2在空间,时间和分组子集的通道维度为每个观测独立。然后,计算归一化激活为

x x μ G σ G 2 + ε

在哪里ϵ是在方差很小时提高数值稳定性的常数。为了考虑均值和单位方差为零的输入对于分组归一化之后的操作不是最优的可能性,分组归一化操作使用转换进一步转移和缩放激活

y γ x + β

其中偏移量β还有比例因子γ是在网络训练期间更新的可学习参数。

参考文献

[1]吴宇欣,何开明。“组织正常化。”预印本已于2018年6月11日提交。https://arxiv.org/abs/1803.08494。

扩展功能

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

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

版本历史

R2020b中介绍