ActivationOperation
功能描述
激活函数,可以引入非线性因素。

定义
struct ActivationParam { enum GeLUMode : int{ TANH_MODE = 0, NONE_MODE, }; ActivationType activationType=ACTIVATION_UNDEFINED; float scale = 1.0f; // for Swish int32_t dim = -1; // for Swiglu GeLUMode geluMode = TANH_MODE; };
参数列表
成员名称 |
类型 |
默认值 |
描述 |
---|---|---|---|
activationType |
ActivationType |
ACTIVATION_UNDEFINED |
激活类型。
|
scale |
float |
1.0f |
Swish激活函数中的缩放系数。 |
dim |
int32_t |
-1 |
Swiglu正反向激活函数使用, 延最后一维切分。 |
geluMode |
GeLUMode |
TANH_MODE |
Gelu模型选择。
|
RELU激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float |
ND |
输入 |
output |
[dim_0,dim_1,... ,dim_n] |
float |
ND |
输出 和输入维度/类型/格式相同。 |
FAST_GELU激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16 |
ND |
输入 |
output |
[dim_0,dim_1,... ,dim_n] |
float16 |
ND |
输出 和输入维度/类型/格式相同。 |
LOG激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16/float |
ND |
输入 |
output |
[dim_0,dim_1,... ,dim_n] |
float16/float |
ND |
输出 和输入维度/类型/格式相同。 |
SIGMOID激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16/bf16 |
ND |
输入 |
output |
[dim_0,dim_1,... ,dim_n] |
float16/bf16 |
ND |
输出 和输入维度/类型/格式相同。 |
SWISH激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16/bf16 |
ND |
输入 |
output |
[dim_0,dim_1,... ,dim_n] |
float16/bf16 |
ND |
输出 和输入维度/类型/格式相同。 |
GELU激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND/NZ |
输入 |
output |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND/NZ |
输出 和输入维度/类型/格式相同。 |
SWIGLU_FORWARD激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND/NZ |
输入 当“activationType”为ACTIVATION_SWIGLU_FORWARD时:对于 |
output |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND/NZ |
输出 和输入维度/类型/格式相同,其dim维所对应的大小是输入的一半。 |
SWIGLU_BACKWARD激活类型输入输出描述
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x1 |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND |
当“activationType”为ACTIVATION_SWIGLU_BACKWARD时,不支持 |
x2 |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND |
输入 和x1的维度/类型/格式相同,其dim维所对应的大小是输入x1的2倍。 |
output |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND |
输出 和x1的维度/类型/格式相同,其dim维所对应的大小是输入x1的2倍。 |
规格约束
激活函数类型请参考ActivationType。
RELU激活类型功能
- 使用参数
activationType = ACTIVATION_RELU
- 函数图
- 表达式
GELU激活类型功能
- Tanh近似计算
- 使用参数
- activationType = ACTIVATION_GELU
- geluMode = TANH_MODE
- 函数图
- 表达式
- 使用参数
- 非近似计算
- 使用参数
- activationType = ACTIVATION_GELU
- geluMode = NONE_MODE
- 函数图
- 表达式
是高斯分布的累积分布函数
- 使用参数
FAST_GELU激活类型功能
- 使用参数
activationType = ACTIVATION_FAST_GELU
- 函数图
- 表达式
SWISH激活类型功能
- 使用参数
- activationType = ACTIVATION_SWISH
- scale
- 函数图
跟所输入的参数scale有关,当scale=1时
- 表达式
LOG激活类型功能
- 使用参数
activationType = ACTIVATION_LOG
- 表达式
SWIGLU_FORWARD激活类型功能
对于
- 使用参数
- activationType = ACTIVATION_SWIGLU_FORWARD
- dim
- 表达式
a, b为对输入tensor延最后一维进行均分。
SWIGLU_BACKWARD激活类型功能
当前仅支持
- 使用参数
- activationType = ACTIVATION_SWIGLU_BACKWARD
- dim
- 表达式
x1为输入tensor1
x2为输入tensor2
a,b为对x2延最后一维进行均分
SIDMOD激活类型功能
- 使用参数
activationType = ACTIVATION_SIGMOID
- 函数图
- 表达式