SoftmaxOperation
功能
Softmax是一种归一化激活函数,可以将Tensor(张量)的某个或多个维度数据归一化,对应维度上每一个元素的范围都在(0, 1)之间并且和为1。
图1 SoftmaxOperation

计算公式
使用场景
通常作为模型的最后一层,例如在Transformer模型中将Self-Attention的K、Q进行softmax,获取相应的相关性。
定义
struct SoftmaxParam { SVector<int64_t> axes; };
参数列表
成员名称 |
类型 |
默认值 |
描述 |
---|---|---|---|
axes |
SVector<int64_t> |
- |
指定轴(维度),axes可以支持多个轴上进行处理。
|
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND |
输入tensor。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[dim_0,dim_1,... ,dim_n] |
float16/float/bf16 |
ND |
输出tensor。维度和数据类型与输入tensor一致。 |
功能列表
- 单维度softmax
当参数axes只含一个元素时,对输入tensor的对应维度进行softmax操作。当axes=[x]时,等效于Pytorch的
- 多维度softmax
当参数axes含有多个元素,且符合要求时时,对输入tensor的对应多个维度进行softmax操作。axes=[x, x+1]时,对x和x+1维度对应的元素进行softmax操作。将axes中连续的多个维度平铺成一维,然后对这一维进行softmax操作,操作完成后再reshape回原来的维度形状。