ConvolutionBackward
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
-
算子功能:卷积的反向传播。根据输出掩码设置计算输入、权重和偏差的梯度。此函数支持1D、2D和3D卷积。
-
计算公式
假定输入的shape为(N,Cin,Din,Hin,WinN,C_{in},D_{in},H_{in},W_{in})、输出的shape为(N,Cout,Dout,Hout,WoutN,C_{out},D_{out},H_{out},W_{out}),那么它们与卷积步长(stridestride)、卷积核大小(kernelSize,kD,kH,kWkernelSize,kD,kH,kW)、膨胀参数(dilationdilation)的关系是:
Dout=⌊Din+2∗padding[0]−dilation[0]∗(kernelSize[0]−1)−1stride[0]+1⌋ D_{out}=\lfloor \frac{D_{in}+2*padding[0]-dilation[0] * (kernelSize[0] - 1) - 1}{stride[0]}+1 \rfloor
Hout=⌊Hin+2∗padding[1]−dilation[1]∗(kernelSize[1]−1)−1stride[1]+1⌋ H_{out}=\lfloor \frac{H_{in}+2*padding[1]-dilation[1] * (kernelSize[1] - 1) - 1}{stride[1]}+1 \rfloor
Wout=⌊Win+2∗padding[2]−dilation[2]∗(kernelSize[2]−1)−1stride[2]+1⌋ W_{out}=\lfloor \frac{W_{in}+2*padding[2]-dilation[2] * (kernelSize[2] -1) -1}{stride[2]}+1 \rfloor
卷积反向传播需要计算对卷积正向的输入张量 xx、卷积核权重张量 ww 和偏置 bb 的梯度。
-
对于 xx 的梯度 ∂L∂x\frac{\partial L}{\partial x}:
∂L∂xn,cin,i,j=∑cout=1Cout∑p=1kH∑q=1kW∂L∂yn,cout,i−p,j−q⋅wcout,cin,p,q\frac{\partial L}{\partial x_{n, c_{in}, i, j}} = \sum_{c_{out}=1}^{C_{out}} \sum_{p=1}^{k_H} \sum_{q=1}^{k_W} \frac{\partial L}{\partial y_{n, c_{out}, i-p, j-q}}\cdot w_{c_{out}, c_{in}, p, q}
其中,LL 为损失函数,∂L∂y\frac{\partial L}{\partial y} 为输出张量 yy 对 LL 的梯度。
-
对于 ww 的梯度 ∂L∂w\frac{\partial L}{\partial w}:
∂L∂wcout,cin,p,q=∑n=1N∑i=1Hout∑j=1Woutxn,cin,i⋅sH+p,j⋅sW+q⋅∂L∂yn,cout,i,j\frac{\partial L}{\partial w_{c_{out}, c_{in}, p, q}} = \sum_{n=1}^{N} \sum_{i=1}^{H_{out}} \sum_{j=1}^{W_{out}} x_{n, c_{in}, i \cdot s_H + p, j \cdot s_W + q} \cdot \frac{\partial L}{\partial y_{n, c_{out}, i, j}}
-
对于 bb 的梯度 ∂L∂b\frac{\partial L}{\partial b}:
∂L∂bcout=∑n=1N∑i=1Hout∑j=1Wout∂L∂yn,cout,i,j\frac{\partial L}{\partial b_{c_{out}}} = \sum_{n=1}^{N} \sum_{i=1}^{H_{out}} \sum_{j=1}^{W_{out}} \frac{\partial L}{\partial y_{n, c_{out}, i, j}}
参数说明
参数名 |
输入/输出/属性 |
描述 |
数据类型 |
数据格式 |
|---|---|---|---|---|
| gradOutput | 输入 |
|
FLOAT、FLOAT16、BFLOAT16 | NCL、NCHW、NCDHW |
| input | 输入 |
|
FLOAT、FLOAT16、BFLOAT16 | NCL、NCHW、NCDHW |
| weight | 输入 |
|
FLOAT、FLOAT16、BFLOAT16 | NCL、NCHW、NCDHW |
| biasSizes | 输入 |
|
INT64 | - |
| stride | 输入 |
|
INT64 | - |
| padding | 输入 |
|
INT64 | - |
| dilation | 输入 |
|
INT64 | - |
| transposed | 输入 |
|
- | - |
| outputPadding | 输入 |
|
INT64 | - |
| groups | 输入 |
|
INT32 | - |
| gradInput | 输出 |
|
FLOAT、FLOAT16、BFLOAT16 | NCL、NCHW、NCDHW |
| gradWeight | 输出 |
|
FLOAT、FLOAT16、BFLOAT16 | NCL、NCHW、NCDHW |
| gradBias | 输出 |
|
FLOAT、FLOAT16、BFLOAT16 | ND |
- Ascend 950PR/Ascend 950DT:
- 只有在transposed=true且output_mask[0]=true时,数据类型才支持HIFLOAT8、FLOAT8_E4M3FN。
- Atlas 推理系列产品、Atlas 训练系列产品:
- 不支持BFLOAT16、HIFLOAT8、FLOAT8_E4M3FN。
- gradOutput、weight参数下,不支持空tensor。
- Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品:
- 不支持HIFLOAT8、FLOAT8_E4M3FN。
约束说明
- Atlas 推理系列产品、Atlas 训练系列产品:当前仅支持1D和2D卷积的反向传播,暂不支持3D卷积的反向传播。
- 更详细的约束说明可查看aclnnConvolutionBackward接口资料。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_conv_backward_1d | 通过aclnnConvolutionBackward接口方式调用Conv3DBackpropFilterV2、Conv3DBackpropInputV2算子 |
| aclnn接口 | test_aclnn_conv_backward_2d | 通过aclnnConvolutionBackward接口方式调用Conv3DBackpropFilterV2、Conv3DBackpropInputV2算子 |
| aclnn接口 | test_aclnn_conv_backward_3d | 通过aclnnConvolutionBackward接口方式调用Conv3DBackpropFilterV2、Conv3DBackpropInputV2算子 |