文件最后提交记录最后更新时间
1 个月前
1 个月前
19 天前
19 天前
19 天前
5 个月前
19 天前
README

MaxPool3DGrad

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

算子功能:正向最大池化后反向传播,将梯度回填到每个窗口最大值的坐标处,相同坐标处累加。

正向输出Shape推导公式

正向MaxPool3D的输出Shape(即orig_ygrads的Shape)由输入Shape、ksize、strides、pads和padding模式共同决定。以NCDHW格式为例,输入orig_x的Shape为 (N,C,Din,Hin,Win)(N, C, D_{in}, H_{in}, W_{in}),正向输出Shape为 (N,C,Dout,Hout,Wout)(N, C, D_{out}, H_{out}, W_{out}),各维度计算公式如下(ceil_mode默认为False,向下取整):

CALCULATED模式:

Dout=⌊Din+2×pads[0]−(kd−1)−1sd⌋+1D_{out} = \left\lfloor \frac{D_{in} + 2 \times pads[0] - (k_d - 1) - 1}{s_d} \right\rfloor + 1

Hout=⌊Hin+2×pads[2]−(kh−1)−1sh⌋+1H_{out} = \left\lfloor \frac{H_{in} + 2 \times pads[2] - (k_h - 1) - 1}{s_h} \right\rfloor + 1

Wout=⌊Win+2×pads[4]−(kw−1)−1sw⌋+1W_{out} = \left\lfloor \frac{W_{in} + 2 \times pads[4] - (k_w - 1) - 1}{s_w} \right\rfloor + 1

VALID模式:

等价于CALCULATED模式下 pads 全为0,即:

Dout=⌊Din−(kd−1)−1sd⌋+1D_{out} = \lfloor{\frac{D_{in} - {(k_d - 1) - 1}}{s_d}}\rfloor + 1

Hout=⌊Hin−(kh−1)−1sh⌋+1H_{out} = \lfloor{\frac{H_{in} - {(k_h - 1) - 1}}{s_h}}\rfloor + 1

Wout=⌊Win−(kw−1)−1sw⌋+1W_{out} = \lfloor{\frac{W_{in} - {(k_w - 1) - 1}}{s_w}}\rfloor + 1

SAME模式:

Dout=⌊Din+sd−1sd⌋D_{out} = \lfloor{\frac{D_{in} + {s_d} - 1}{s_d}}\rfloor

Hout=⌊Hin+sh−1sh⌋H_{out} = \lfloor{\frac{H_{in} + {s_h} - 1}{s_h}}\rfloor

Wout=⌊Win+sw−1sw⌋W_{out} = \lfloor{\frac{W_{in} + {s_w} - 1}{s_w}}\rfloor

输出Shape:

反向传播的输出y与输入orig_x的Shape完全一致:

y.shape=orig_x.shape=(N,C,Din,Hin,Win)y.shape = orig\_x.shape = (N, C, D_{in}, H_{in}, W_{in})

参数说明:

  • kd,kh,kwk_d, k_h, k_w:ksize在D、H、W维度上的窗口大小
  • sd,sh,sws_d, s_h, s_w:strides在D、H、W维度上的步长

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
orig_x 输入 待进行MaxPool3DGrad计算的入参,表示正向的输入Tensor。 FLOAT、FLOAT16、BFLOAT16 NCDHW,NDHWC
orig_y 输入 表示正向输入中最大元素的索引位置。数据格式需要与`orig_x`一致,shape需要与`grads`一致。 FLOAT、FLOAT16、BFLOAT16 NCDHW,NDHWC
grads 输入 待进行MaxPool3DGrad计算的入参,表示当前节点的梯度。 FLOAT、FLOAT16、BFLOAT16 NCDHW,NDHWC
ksize 属性 表示最大池化的窗口大小。 INT64 -
strides 属性 表示池化操作的步长。 INT64 -
padding 可选属性 pad模式,支持SAME、VALID和CALCULATED,填补的数据为-inf,默认SAME。 - -
pads 属性 当pad模式为CALCULATED时生效,指定D/H/W三个维度前后方向的填充量,格式为[d_front, d_back, h_front, h_back, w_front, w_back]。 INT64 -
data_format 可选属性 表示支持的数据格式。 - 支持NCDHW,NDHWC
y 输出 待进行MaxPool3DGrad计算的出参。shape、数据格式需要与`orig_x`一致。 FLOAT、FLOAT16、BFLOAT16 NCDHW,NDHWC

约束说明

  • ksize:数组长度必须为5,且N和C维度对应的值必须为1,即 (1, 1, k_d, k_h, k_w)
  • strides:数组长度必须为5,且N和C维度对应的值必须为1,即 (1, 1, s_d, s_h, s_w)
  • pads:仅在 padding="CALCULATED" 时生效,数组长度必须为6,格式为 [d_front, d_back, h_front, h_back, w_front, w_back],各值 >= 0;前侧pad(pads[0]、pads[2]、pads[4])需满足 <= 对应维度 kernel_size / 2。
  • orig_ygrads 的Shape必须一致,且与正向MaxPool3D的输出Shape匹配。
  • y 的Shape必须与 orig_x 的Shape一致。

调用说明

不涉及。