昇腾社区首页
中文
注册
开发者
下载

aclnnExpSegsum

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:进行分段和计算。生成对角线为0的半可分矩阵,且上三角为-inf。

  • 计算公式(以4D输入为例):

    1. 输入self由(N1,N2,N3,N4)升维成(N1,N2,N3,N4,1)。
    2. 进行广播得到(N1,N2,N3,N4,N4)。
    3. 生成(N4,N4)类型为bool的三角矩阵A,上三角为True,下三角为False,对角线为True。
    4. 用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}
    1. 以self的倒数第二维进行cumsum累加。从维度视角来看的某个元素(其它维度下标不变,当前维度下标依次递增),selfTemp_iselfTemp\_{i}是输出张量中对应位置的元素。

      selfTempi=self1+self2+self3+......+selfiselfTemp_{i} = self_{1} + self_{2} + self_{3} + ...... + self_{i}
    2. 生成(N4,N4)类型为bool的三角矩阵B,上三角为True,下三角为False,对角线为False。

    3. 用-inf填充selfTemp里面与矩阵B中值为True的位置相对应的元素。

      outi={selfTempi,Bi==Falseinf,Bi==Trueout_i= \begin{cases}selfTemp_i,\quad B_i==False \\-inf, \quad B_i==True \end{cases}
    4. 计算selfTemp里面每个元素的指数。

      outi=eselfTempiout_i=e^{selfTemp_i}

函数原型

每个算子分为,必须先调用“aclnnExpSegsumGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnExpSegsum”接口执行计算。

[object Object]
[object Object]

aclnnExpSegsumGetWorkspaceSize

  • 参数说明

    [object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclnnExpSegsum

  • 参数说明

    [object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

约束说明

  • 确定性计算:
    • aclnnExpSegsum默认确定性实现。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]