conv2d_backprop_input

功能说明

在给定5HD格式的out_backprop和FracZ格式的Weight的情况下计算float16的2-D反卷积。

out_backprop Tensor 的shape是 5HD,即(N, C1, H, W, C0);Weight Tensor的shape是FracZ,即(C1*KH*KW,Cout//C0_out,C0_out,C0)。

函数原型

conv2d_backprop_input(filters, out_backprop, filter_sizes, input_sizes, para_dict)

参数说明

返回值

res_tensor:表示卷积计算的tensor,即卷积计算的结果输出。

约束说明

此接口暂不支持与其他TBE DSL计算接口混合使用。

支持的芯片型号

Atlas 200/300/500 推理产品

Atlas 训练系列产品

调用示例

from tbe import tvm
from tbe import dsl
from tbe.dsl.compute import cube_util

out_backprop_shape = (1, 1, 7, 7, 16)
out_backprop_dtype = "float16"
filter_frac = (1, 1, 16, 16)
filter_dtype = "float16"
filter_sizes = (16, 16, 1, 1)
input_sizes = (1, 16, 7, 7)

out_backprop = tvm.placeholder(out_backprop_shape, name="out_backprop", dtype=out_backprop_dtype)
filters = tvm.placeholder(filter_frac, name="filters", dtype=filter_dtype)

strides = [1, 1]
padding = [0, 0, 0, 0]
dilations = [1, 1, 1, 1]
res_dtype = "float32"
offset_x = 0
offset_w = None
kernel_name = "conv2d_backprop_input_dx_1_1_7_7_16_dy_1_1_7_7_16_dw_16_16_1_1_s_1_1_p_SAME"

group_dict = {
    "groups": 1,
    "g_extend": 1,
    "multiple_extend": 1,
    "dx_c1_extend": (input_sizes[1] + 16 - 1)// 16,
    "dy_c1_extend": out_backprop_shape [1],
    "dx_c_ori": input_sizes[1],
    "dy_c_ori": filter_sizes[0],
    "filter_batch_ori": filter_sizes[0],
    "filter_c_ori": filter_sizes[1],
    "filter_ori_format": "NCHW"
}

para_dict = {
    "strides": strides,
    "padding": padding,
    "dilations": dilations,
    "res_dtype": res_dtype,
    "offset_x": offset_x,
    "offset_w": offset_w,
    "kernel_name": kernel_name,
    "group_dict": group_dict
}

input_backprop = dsl.conv2d_backprop_input(
    filters=filters,
    out_backprop=out_backprop,
    filter_sizes=filter_sizes,
    input_sizes=input_sizes,
    para_dict=para_dict
)