code: def test_fake_quantize_conv_per_channel():
      for out_dtype in ["int8", "uint8"]:
          x = relay.var("x", shape=[1, 3, 224, 224], dtype="int8")
          w = relay.var("w", shape=[16, 3, 5, 5], dtype="int8")
          one = relay.const([1.0] * 16)
          zero_point = relay.const([np.random.randint(0, 255)] * 16)
  
          op = relay.op.nn.conv2d(
              relay.qnn.op.dequantize(
                  x, relay.const(2.0), relay.const(0)
              ),
              relay.qnn.op.dequantize(
                  w,
                  relay.const(np.random.random([16]).astype("float32")),
                  zero_point,
                  axis=0,
              ),
              kernel_size=[5, 5],
              channels=16,
          )
          op = relay.qnn.op.quantize(
              op, relay.const(1.0), relay.const(0), out_dtype=out_dtype
          )
  
          x_np = np.random.randint(
              -128, 127, size=[1, 3, 224, 224], dtype="int8"
          )
          w_np = np.random.randint(
              -128, 127, size=[16, 3, 5, 5], dtype="int8"
          )
  
          compare_fq_to_int(op, [x_np, w_np], allow_rounding_error=True)
  
imports: import numpy
  import pytest
  import tvm
  import tvm.testing
  from tvm import relay
  from tvm.relay.transform import fake_quantization_to_integer
label_desc: Use image node_id 3 for calling a global function with example usage: test_fake_quantize_conv_per_channel() without return types