def METHOD_NAME(data, kernel, strides, padding, out_dtype, output_padding):
    """Implementation of conv3d transpose"""
    data_pad, kernel_transform = conv3d_transpose_ncdhw_preprocess(
        data, kernel, strides, padding, out_dtype, output_padding
    )
    batch, in_c, in_d, in_h, in_w = data_pad.shape
    out_c, _, filter_d, filter_h, filter_w = kernel_transform.shape
    stride_d, stride_h, stride_w = strides
    # convolution stage
    out_c = simplify(out_c)
    out_d = simplify(in_d - filter_d + 1)
    out_h = simplify(in_h - filter_h + 1)
    out_w = simplify(in_w - filter_w + 1)
    dc = te.reduce_axis((0, in_c), name="dc")
    dd = te.reduce_axis((0, filter_d), name="dd")
    dh = te.reduce_axis((0, filter_h), name="dh")
    dw = te.reduce_axis((0, filter_w), name="dw")
    Output = te.compute(
        (batch, out_c, out_d, out_h, out_w),
        lambda b, c, d, h, w: te.sum(
            data_pad[b, dc, d + dd, h + dh, w + dw].astype(out_dtype)
            * kernel_transform[c, dc, dd, dh, dw].astype(out_dtype),
            axis=[dc, dd, dh, dw],
        ),
        tag="conv3d_transpose_ncdhw",
    )
    return Output