LayerNormOperation
功能
归一化处理。
当前支持两种:NORM、POSTNORM。


约束
beginNormAxis维度小于等于输入x的维度。
当layerType为LAYER_NORM_POSTNORM时,所有输入输出Tensor的最后一维大小相等并且小于或等于6656。
定义
struct LayerNormParam { enum LayerNormType { LAYER_NORM_UNDEFINED = 0, LAYER_NORM_NORM, LAYER_NORM_PRENORM, LAYER_NORM_POSTNORM, }; struct NormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; int32_t beginNormAxis = 0; int32_t beginParamsAxis = 0; float quantInputScale = 1.0f; int quantInputOffset = 0; float quantInputAlpha = 1.0f; }; struct PostNormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; size_t opMode = 0; float zoomScaleValue = 1.0f; float quantInputScale = 1.0f; int quantInputOffset = 0; float quantInputAlpha = 1.0f; }; LayerNormType layerType = LAYER_NORM_UNDEFINED; NormParam normParam; PostNormParam postNormParam; };
成员
成员名称 |
描述 |
---|---|
layerType |
归一化类型:NORM、PRENORM(当前不支持)、POSTNORM。 |
normParam |
NORM参数。 |
postNormParam |
POSTNORM参数。 |
参数 |
描述 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
beginNormAxis |
归一化的维度,默认值为0,从第几维开始norm,同时决定输入gamma和beta维度。 |
beginParamsAxis |
归一化的维度,默认值为0,决定从第几维开始把后面的维度按轴合并。 |
quantInputScale |
量化参数,非对称量化尺度变化(调整fp的输出),推荐值由量化工具(如ModelSlim)计算得出。 |
quantInputOffset |
量化参数,非对称量化偏移(输出后加上偏移),推荐值由量化工具(如ModelSlim)计算得出。 |
quantInputAlpha |
量化参数,输出系数缩放因子。 |
参数 |
描述 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
opMode |
|
zoomScale |
缩放因子。 |
quantInputScale |
量化参数,非对称量化尺度变化(调整fp的输出),推荐值由量化工具(如ModelSlim)计算得出。 |
quantInputOffset |
量化参数,非对称量化偏移(输出后加上偏移),推荐值由量化工具(如ModelSlim)计算得出。 |
quantInputAlpha |
量化参数,输出系数缩放因子。 |
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1] -1表示当前维度的大小没有约束。 |
float16/float |
ND |
仅NORM支持float。 |
gamma |
[beginNormAxis:] Or [1,-1] -1表示当前维度的大小没有约束。 |
float16/float |
ND |
NORM支持float16/float,维度可根据beginNormAxis确定,默认为2维。 |
beta |
[beginNormAxis:] Or [1,-1] -1表示当前维度的大小没有约束。 |
float16/float |
ND |
NORM支持float16/float,维度可根据beginNormAxis确定,默认为2维。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |
residual |
[-1,…,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |
gamma |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
beta |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1] |
float16/float |
ND |
- |
outputQuant |
[-1,…,-1] |
int8 |
ND |
quantType = QUANT_INT8时才输出。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,n] |
float16 |
ND |
- |
outputQuant |
[-1,…,n] |
int8 |
ND |
quantType = QUANT_INT8时才输出。 |