昇腾社区首页
中文
注册

SoftmaxOperation

产品支持情况

硬件型号

是否支持

特殊说明

Atlas A3 推理系列产品 / Atlas A3 训练系列产品

-

Atlas A2 训练系列产品 / Atlas 800I A2 推理产品

-

Atlas 训练系列产品

-

Atlas 推理系列产品

-

Atlas 200I/500 A2 推理产品

仅支持float、float16数据类型。

功能说明

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

图1 SoftmaxOperation

计算公式

使用场景

通常作为模型的最后一层,例如在Transformer模型中将Self-Attention的K、Q进行softmax,获取相应的相关性。

定义

1
2
3
4
struct SoftmaxParam {
    SVector<int64_t> axes;
    uint8_t rsv[8] = {0};
};

参数列表

成员名称

类型

默认值

描述

axes

SVector<int64_t>

-

指定轴(维度),axes可以支持多个轴上进行处理。

  • axes不能为空,当指定多个轴时,多个轴之间必须连续且从小到大排列。
  • axes的元素要求大于或等于-1且小于输入x的维度,-1只能单独存在。例如:不支持[-1,0]。

rsv[8]

uint8_t

{0}

预留参数。

输入

参数

维度

数据类型

格式

描述

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回原来的维度形状。