归一化处理。
当前支持两种:NORM、POSTNORM。
beginNormAxis维度小于等于输入x的维度。
当layerType为LAYER_NORM_POSTNORM时,所有输入输出Tensor的最后一维大小相等并且小于或等于6656。
struct LayerNormParam { enum LayerNormType : int { 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; }; struct PostNormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; size_t opMode = 0; // 0: high precision 1: high performance, also for quant float zoomScaleValue = 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,决定从第几维开始把后面的维度按轴合并。 |
参数 |
描述 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
opMode |
|
zoomScale |
缩放因子。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
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维。 |
scale |
[1] |
float16 |
ND |
quantType = QUANT_INT8时才输入。 |
offset |
[1] |
int8 |
ND |
quantType = QUANT_INT8时才输入。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
residual |
[-1,…,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
gamma |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
beta |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
scale |
[1] |
float16 |
ND |
quantType = QUANT_INT8时才输入。 |
offset |
[1] |
int8 |
ND |
quantType = QUANT_INT8时才输入。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1] |
float16, float, int8 |
ND |
quantType = QUANT_INT8时数据类型为int8,quantType = QUANT_UNDEFINED时数据类型为float16或float |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,n] |
float16 |
ND |
- |
outputQuant |
[-1,…,n] |
int8 |
ND |
quantType = QUANT_INT8时才输出。 |