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

aclnnConvTbcBackward

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:用于计算时序卷积的反向传播

  • 计算公式:

    假定输入Conv_tbc正向的输入inputinput的shape是(Hin,N,Cin)(H_{\text{in}},N,C_{\text{in}}),输出梯度gradOutputgradOutput的shape是(Hout,N,Cout)(H_{\text{out}},N,C_{\text{out}}),卷积核weightweight的shape是(K,Cin,Cout)(K,C_{\text{in}},C_{\text{out}}),偏置biasbias的shape为(Cout)(C_{\text{out}})

    Hout=Hin+2padKS+1H_{out} = \lfloor \frac{H_{in} + 2 \cdot pad - K}{S} \rfloor + 1

    卷积反向传播需要计算对卷积正向的输入张量 xx(对应函数原型中的input)、卷积核权重张量 ww (对应函数原型中的weight)和偏置 bb 的梯度。

    • 对于 xx 的梯度 Lx\frac{\partial L}{\partial x}(对应函数原型中的gradInput参数):

      Lxt,b,cin=k=0K1cout=0Cout1Lytk,b,coutwk,cin,cout\frac{\partial L}{\partial x_{t,b,c_{in}}} = \sum_{k=0}^{K-1} \sum_{c_{out}=0}^{C_{out}-1} \frac{\partial L}{\partial y_{t-k,b,c_{out}}} \cdot w_{k,c_{in},c_{out}}

      其中,LL 为损失函数,Ly\frac{\partial L}{\partial y} 为输出张量 yyLL 的梯度(对应函数原型中的gradOutput参数)。

    • 对于 ww 的梯度 Lw\frac{\partial L}{\partial w}(对应函数原型中的gradWeight参数):

      Lwk,cin,cout=b=0N1t=0Hout1xtS+k,b,cinLyt,b,cout\frac{\partial L}{\partial w_{k,c_{in},c_{out}}} = \sum_{b=0}^{N-1} \sum_{t=0}^{H_{out}-1} x_{t \cdot S+k,b,c_{in}} \cdot \frac{\partial L}{\partial y_{t,b,c_{out}}}
    • 对于 bb 的梯度 Lb\frac{\partial L}{\partial b}(对应函数原型中的gradBias参数):

      Lbcout=b=0N1t=0Hout1Lyt,b,cout\frac{\partial L}{\partial b_{c_{out}}} = \sum_{b=0}^{N-1}\sum_{t=0}^{H_{\text{out}}-1} \frac{\partial L}{\partial y_{t,b,c_{out}}}

函数原型

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

[object Object]
[object Object]

aclnnConvTbcBackwardGetWorkspaceSize

  • 参数说明:

    [object Object]
    • 公式一:(Hout,N,Cout)(H_{\text{out}},N,C_{\text{out}})
    • 公式二:(Hin,N,Cin)(H_{\text{in}},N,C_{\text{in}})
    • 公式三:(K,Cin,Cout)(K,C_{\text{in}},C_{\text{out}})
    • 公式四:(Cout)(C_{\text{out}})
    • 公式五:(Hin,N,Cin)(H_{\text{in}},N,C_{\text{in}})
    • 公式六:(K,Cin,Cout)(K,C_{\text{in}},C_{\text{out}})
    • 公式七:(Cout)(C_{\text{out}})
  • 返回值:

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

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

    [object Object]

aclnnConvTbcBackward

  • 参数说明:

    [object Object]
  • 返回值:

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

约束说明

  • 确定性计算

    • aclnnConvTbcBackward默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
    [object Object]
[object Object]

由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击获取技术支持。

调用示例

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

[object Object]