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

aclnnCrossEntropyLoss

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:计算输入的交叉熵损失。

  • 计算公式:

    reductionOptional = mean时,交叉熵损失loss的计算公式为:

    ln=weightynlogexp(xn,yn)c=1Cexp(xn,c)1{yn != ignoreIndex}l_n = -weight_{y_n}*log\frac{exp(x_{n,y_n})}{\sum_{c=1}^Cexp(x_{n,c})}*1\{y_n\ !=\ ignoreIndex \} loss={n=1N1n=1Nweightyn1{yn != ignoreIndex}ln,if reductionOptional = ‘mean’n=1Nln,if reductionOptional = ‘sum’ {l0,l1,...,ln},if reductionOptional = ‘None’ loss=\begin{cases}\sum_{n=1}^N\frac{1}{\sum_{n=1}^Nweight_{y_n}*1\{y_n\ !=\ ignoreIndex \}}l_n,&\text{if reductionOptional = ‘mean’} \\\sum_{n=1}^Nl_n,&\text {if reductionOptional = ‘sum’ }\\\{l_0,l_1,...,l_n\},&\text{if reductionOptional = ‘None’ }\end{cases}

    log_prob计算公式为:

    lsen=logc=1Cexp(xn,c)lse_n = log*\sum_{c=1}^{C}exp(x_{n,c}) logProbn,c=xn,clsenlogProb_{n,c} = x_{n,c} - lse_n

    zloss计算公式为:

    zlossn=lseSquareScaleForZlosslsen2zloss_n = lseSquareScaleForZloss * (lse_n)^2

    其中,N为batch数,C为标签数。

函数原型

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

[object Object]
[object Object]

aclnnCrossEntropyLossGetWorkspaceSize

  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

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

    [object Object]

aclnnCrossEntropyLoss

  • 参数说明

    [object Object]
  • 返回值

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

约束说明

  • target仅支持类标签索引,不支持概率输入。
  • 当前暂不支持zloss相关功能。传入相关输入,即lseSquareScaleForZloss、returnZloss,不会生效。
  • 确定性计算:
    • aclnnCrossEntropyLoss默认确定性实现。

调用示例

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

[object Object]