昇腾社区首页
中文
注册

aclnnSmoothL1Loss

支持的产品型号

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

接口原型

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

  • aclnnStatus aclnnSmoothL1LossGetWorkspaceSize(const aclTensor *self, const aclTensor *target, int64_t reduction, float beta, aclTensor *result, uint64_t *workspaceSize, aclOpExecutor **executor)
  • aclnnStatus aclnnSmoothL1Loss(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor,aclrtStream stream)

功能描述

  • 算子功能: 计算SmoothL1损失函数。

  • 计算公式:

    Batch为N的损失函数,当reduction为none时,此函数定义为:

    (sell,target)=L={l1,,lN}\ell(sell,target) = L = \{l_1,\dots,l_N\}^\top

    其中的lNl_N为:

    ln={0.5(selfntargetn)2/beta,if selfntargetn<betaselfntargetn0.5beta,otherwisel_n = \begin{cases} 0.5(self_n-target_n)^2/beta, & if\ |self_n-target_n| < beta \\ |self_n-target_n| - 0.5*beta, & otherwise \end{cases}

    如果reductionmeansum时,

    (self,target)={mean(L),if reduction=‘mean’sum(L),if reduction=‘sum’\ell(self,target)=\begin{cases} mean(L), & \text{if reduction} = \text{`mean'}\\ sum(L), & \text{if reduction} = \text{`sum'} \end{cases}

aclnnSmoothL1LossGetWorkspaceSize

  • 参数说明:

    • self(const aclTensor *,计算输入):公式中的self,shape需要与target满足且最高支持8维,数据类型支持FLOAT、FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持),且数据类型需,支持非连续的Tensor, 支持ND,NCL,NCHW,NHWC。

    • target(const aclTensor *,计算输入):公式中的target,shape需要与self满足且最高支持8维,数据类型支持FLOAT、FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持),且数据类型需,支持非连续的Tensor, 支持ND,NCL,NCHW,NHWC。

    • reduction(int64_t,计算输入): 公式中的输入reduction,指定要应用到输出的缩减,支持0('none')|1('mean')|2('sum')。'none'表示不应用减少,'mean'表示输出的总和将除以输出中的元素数,'sum'表示输出将被求和。

    • beta(float,计算输入): 数据类型支持FLOAT。

    • result(aclTensor *,计算输出):公式中输出的损失函数\ell,当reductionnone时,shape与self和target的broadcast结果一致,当reductionmeansum时为[],数据类型支持FLOAT,FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持),支持非连续的tensor,支持ND,NCL,NCHW,NHWC。

    • workspaceSize(uint64_t *,出参):返回用户需要在Device侧申请的workspace大小。

    • executor(aclOpExecutor **,出参):返回op执行器,包含了算子计算流程。

  • 返回值:

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

    [object Object]

aclnnSmoothL1Loss

  • 参数说明:

    • workspace(void *):在Device侧申请的workspace内存地址。

    • workspaceSize(uint64_t):在Device侧申请的workspace大小,由第一段接口aclnnSmoothL1LossGetWorkspaceSize获取。

    • executor(aclOpExecutor *):op执行器,包含了算子计算流程。

    • stream(aclrtStream):指定执行任务的 AscendCL Stream流。

  • 返回值:

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

约束与限制

无。

调用示例

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

[object Object]