@staticmethod
def backward(ctx, grad_y):
    (x,) = ctx.saved_variables
    if x.is_cuda:
        gpu.conv_rectify(grad_y, x, ctx.kernel_size, ctx.stride, ctx.padding, ctx.dilation, ctx.average)
    else:
        cpu.conv_rectify(grad_y, x, ctx.kernel_size, ctx.stride, ctx.padding, ctx.dilation, ctx.average)
    ctx.mark_dirty(grad_y)
    return (grad_y, None, None, None, None, None, None)
@staticmethod
def backward(ctx, grad_y):
    (x,) = ctx.saved_variables
    if x.is_cuda:
        gpu.conv_rectify(grad_y, x, ctx.kernel_size, ctx.stride, ctx.padding, ctx.dilation, ctx.average)
    else:
        cpu.conv_rectify(grad_y, x, ctx.kernel_size, ctx.stride, ctx.padding, ctx.dilation, ctx.average)
    ctx.mark_dirty(grad_y)
    return (grad_y, None, None, None, None, None, None)