Segsum
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
| Kirin X90 处理器系列产品 | √ |
| Kirin 9030 处理器系列产品 | √ |
功能说明
-
算子功能:进行分段和计算。生成对角线为0的半可分矩阵,且上三角为-inf。
-
计算公式(以4D输入为例):
-
输入self由(N1,N2,N3,N4)升维成(N1,N2,N3,N4,1)。
-
进行广播得到(N1,N2,N3,N4,N4)。
-
生成(N4,N4)类型为bool的三角矩阵A,上三角为True,下三角为False,对角线为True。
-
用0填充输入self里面与矩阵A中值为True的位置相对应的元素。
selfi={selfi,Ai==False0,Ai==Trueself_i= \begin{cases}self_i,\quad A_i==False \\0, \quad A_i==True \end{cases}
-
以self的倒数第二维进行cumsum累加。从维度视角来看的某个元素(其它维度下标不变,当前维度下标依次递增),selfTemp_iselfTemp\_{i}是输出张量中对应位置的元素。
selfTempi=self1+self2+self3+......+selfiselfTemp_{i} = self_{1} + self_{2} + self_{3} + ...... + self_{i}
-
生成(N4,N4)类型为bool的三角矩阵B,上三角为True,下三角为False,对角线为False。
-
用-inf填充selfTemp里面与矩阵B中值为True的位置相对应的元素。
outi={selfTempi,Bi==False−inf,Bi==Trueout_i= \begin{cases}selfTemp_i,\quad B_i==False \\-inf, \quad B_i==True \end{cases}
-
计算selfTemp里面每个元素的指数。
outi=eselfTempiout_i=e^{selfTemp_i}
-
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 进行分段和计算的输入,对应公式中的`self`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| y | 输出 | 完成分段和计算后的输出,对应公式中的`out`。输出维度必须比输入维度大1,支持4D或5D。当输入`x`为3D时,输出前3维的维度大小与`x`的保持一致,最后1维的维度大小与第3维保持一致。当输入`x`为4D时,输出前4维的维度大小与`x`的保持一致,最后1维的维度大小与第4维保持一致。数据类型与输入`x`的数据类型保持一致。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
- Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_segsum | 通过aclnnExpSegsum接口方式调用Segsum算子。 |