def run_batchnorm(src_dtype, dst_dtype, rtol=1e-6, atol=1e-6):
    shape = (3, 32, 32)
    t = relay.TensorType(shape, src_dtype)
    x = relay.var("x", t)
    bn = batch_norm_infer(data=x, epsilon=2e-5, scale=False, name="bn_x")
    f = relay.Function(relay.analysis.free_vars(bn), bn)

    x_data = np.random.rand(*shape).astype(t.dtype)
    module = tvm.IRModule.from_expr(f)

    zero_data = np.zeros((32), "float32")
    compare(
        module,
        (x_data, zero_data, zero_data, zero_data, zero_data),
        src_dtype,
        dst_dtype,
        rtol,
        atol,
    )
Example #2
0
def yolo():
    inp = relay.var("data", shape=(1, 3, 416, 416))

    conv0 = layers.conv2d(name="conv0",
                          data=inp,
                          channels=16,
                          kernel_size=(3, 3),
                          strides=(1, 1),
                          padding=(1, 1))
    b0 = relay.var("b0_bias")
    bias0 = relay.nn.bias_add(conv0, b0)
    bn0 = layers.batch_norm_infer(bias0, name="bn0")
    a1 = relay.nn.leaky_relu(bn0, alpha=0.1)
    p2 = relay.nn.max_pool2d(a1, pool_size=(2, 2), strides=(2, 2))

    conv3 = layers.conv2d(name="conv3",
                          data=p2,
                          channels=32,
                          kernel_size=(3, 3),
                          strides=(1, 1),
                          padding=(1, 1))
    b3 = relay.var("b3_bias")
    bias3 = relay.nn.bias_add(conv3, b3)
    bn3 = layers.batch_norm_infer(bias3, name="bn3")
    a4 = relay.nn.leaky_relu(bn3, alpha=0.1)
    p5 = relay.nn.max_pool2d(a4, pool_size=(2, 2), strides=(2, 2))

    conv6 = layers.conv2d(name="conv6",
                          data=p5,
                          channels=64,
                          kernel_size=(3, 3),
                          strides=(1, 1),
                          padding=(1, 1))
    b6 = relay.var("b6_bias")
    bias6 = relay.nn.bias_add(conv6, b6)
    bn6 = layers.batch_norm_infer(bias6, name="bn6")
    a7 = relay.nn.leaky_relu(bn6, alpha=0.1)
    p8 = relay.nn.max_pool2d(a7, pool_size=(2, 2), strides=(2, 2))

    conv9 = layers.conv2d(name="conv9",
                          data=p8,
                          channels=128,
                          kernel_size=(3, 3),
                          strides=(1, 1),
                          padding=(1, 1))
    b9 = relay.var("b9_bias")
    bias9 = relay.nn.bias_add(conv9, b9)
    bn9 = layers.batch_norm_infer(bias9, name="bn9")
    a10 = relay.nn.leaky_relu(bn9, alpha=0.1)
    p11 = relay.nn.max_pool2d(a10, pool_size=(2, 2), strides=(2, 2))

    conv12 = layers.conv2d(name="conv12",
                           data=p11,
                           channels=256,
                           kernel_size=(3, 3),
                           strides=(1, 1),
                           padding=(1, 1))
    b12 = relay.var("b12_bias")
    bias12 = relay.nn.bias_add(conv12, b12)
    bn12 = layers.batch_norm_infer(bias12, name="bn12")
    a13 = relay.nn.leaky_relu(bn12, alpha=0.1)
    p14 = relay.nn.max_pool2d(a13, pool_size=(2, 2), strides=(2, 2))

    conv15 = layers.conv2d(name="conv15",
                           data=p14,
                           channels=512,
                           kernel_size=(3, 3),
                           strides=(1, 1),
                           padding=(1, 1))
    b15 = relay.var("b15_bias")
    bias15 = relay.nn.bias_add(conv15, b15)
    bn15 = layers.batch_norm_infer(bias15, name="bn15")
    a16 = relay.nn.leaky_relu(bn15, alpha=0.1)
    p17 = relay.nn.max_pool2d(a16,
                              pool_size=(2, 2),
                              strides=(1, 1),
                              padding=(0, 0))

    conv18 = layers.conv2d(name="conv18",
                           data=p17,
                           channels=1024,
                           kernel_size=(3, 3),
                           strides=(1, 1),
                           padding=(1, 1))
    b18 = relay.var("b18_bias")
    bias18 = relay.nn.bias_add(conv18, b18)
    bn18 = layers.batch_norm_infer(bias18, name="bn18")
    a19 = relay.nn.leaky_relu(bn18, alpha=0.1)

    conv20 = layers.conv2d(name="conv20",
                           data=a19,
                           channels=1024,
                           kernel_size=(3, 3),
                           strides=(1, 1),
                           padding=(1, 1))
    b20 = relay.var("b20_bias")
    bias20 = relay.nn.bias_add(conv20, b20)
    bn20 = layers.batch_norm_infer(bias20, name="bn20")
    a21 = relay.nn.leaky_relu(bn20, alpha=0.1)

    conv22 = layers.conv2d(name="conv22",
                           data=a21,
                           channels=125,
                           kernel_size=(1, 1),
                           strides=(1, 1),
                           padding=(1, 1))
    b22 = relay.var("b22_bias")
    bias22 = relay.nn.bias_add(conv22, b22)
    final = relay.op.add(bias22, relay.const(1.0))

    fn = relay.Function(relay.analysis.free_vars(final), final)
    return init.create_workload(fn)