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

aclnnConvTbcBackward

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:实现输入输出维度为T(时间或空间维度)、B(批次)、C(通道)的一维卷积的反向传播。

  • 计算公式: 假定输入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}}),反向传播过程中对于输入的填充为 padpad,上述参数的关系是:

    Hout=Hin+2padK+1H_{out} = {H_{in} + 2 \cdot pad - K} + 1

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

    • 对于 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}}

      其中,NN 表示批次大小(batch size),CC 表示通道数,HH 表示时间或空间维度,LL 表示损失函数,Ly\frac{\partial L}{\partial y} 代表输出张量 yyLL 的梯度(对应函数原型中的self参数)。

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

      Lwk,cin,cout=b=0N1t=0Hout1xt+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+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]
  • 返回值:

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

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

    [object Object]

aclnnConvTbcBackward

  • 参数说明:

    [object Object]
  • 返回值:

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

约束说明

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

调用示例

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

[object Object]