SoftmaxOperation
产品支持情况
| 
          硬件型号  | 
        
          是否支持  | 
        
          特殊说明  | 
       
|---|---|---|
| 
          | 
        
          √  | 
        
          -  | 
       
| 
          | 
        
          √  | 
        
          -  | 
       
| 
          | 
        
          √  | 
        
          -  | 
       
| 
          | 
        
          √  | 
        
          -  | 
       
| 
          | 
        
          √  | 
        
          仅支持float、float16数据类型。  | 
       
功能说明
Softmax是一种归一化激活函数,可以将Tensor(张量)的某个或多个维度数据归一化,对应维度上每一个元素的范围都在(0, 1)之间并且和为1。
    计算公式

使用场景
通常作为模型的最后一层,例如在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可以支持多个轴上进行处理。 
  | 
       
| 
          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回原来的维度形状。
