计算maxpooling3d的二阶梯度。
如下所示:
input_d = 4, input_h =4, input_w = 4
stride_d = 2, stride_h = 2, stride_w =2
kernel_d = 2, kernel_h = 2, kernel_w = 2
计算如下:
您可以在“te/lang/cce/te_compute/pooling3d_max_grad_grad_compute.py”查看接口定义。
此接口暂不支持与其他TBE DSL计算接口混合使用。
该接口不支持出口量化功能。
te.lang.cce.max_pooling3d_grad_grad(orig_input, orig_output, grad_grad, assist_tensor, ksize, strides, pads=(0, 0, 0, 0, 0, 0), data_format="NDHWC", padding="SAME")
res_tensor:输出tensor,tvm.tensor类型,为符合6D-NDC1HWC0格式排布的tensor。
将tensor_in 的shape信息记为[N, D, C1, H, W, C0=16],window 的shape信息记为 [F, F],stride 信息记为 [S, S],则:
MAX and AVG 的VALID模式与SAME模式下输出tensor的shape信息计算方式分别如下所示:
Atlas 200/300/500 推理产品
Atlas 训练系列产品
from tbe import tvm import te.lang.cce shape_in = (1, 416, 2, 416, 416, 16) shape_out = (1, 208, 2, 208, 208, 16) shape_ksize = (3, 3, 3) input_dtype = "float16" orig_in = tvm.placeholder(shape_in, name="orig_in", dtype=input_dtype) orig_out = tvm.placeholder(shape_out, name="orig_out", dtype=input_dtype) grad_grad = tvm.placeholder(shape_in, name="grad_grad", dtype=input_dtype) assist_tensor = tvm.placeholder(shape_in, name="assist_tensor", dtype=input_dtype) res = te.lang.cce.max_pooling3d_grad_grad(orig_in, orig_out, grad_grad, assist_tensor, (3, 3, 3), (2, 2, 2), (0, 0, 0, 0, 0, 0), "NDHWC") # res.shape = (1, 208, 2, 208, 208, 16)