code: def dequantize_test_driver(
      in_dtype,
      quant_args,
      in_data,
      verify_output_data,
      axis,
      out_dtype="float32",
  ):
      shape = in_data.shape
      input_data = relay.var("input_data", shape=shape, dtype=in_dtype)
      input_zero_point = relay.const(
          quant_args["in_zero_point"], "int32"
      )
      input_scale = relay.const(quant_args["in_scale"], "float32")
      quantized_output = relay.qnn.dequantize(
          input_data,
          input_scale=input_scale,
          input_zero_point=input_zero_point,
          axis=axis,
          out_dtype=out_dtype,
      )
      mod = relay.Function(
          relay.analysis.free_vars(quantized_output), quantized_output
      )
      mod = tvm.IRModule.from_expr(mod)
      with tvm.transform.PassContext(opt_level=3):
          graph, lib, params = relay.build(mod, "llvm", params=None)
          rt_mod = graph_executor.create(graph, lib, device=tvm.cpu(0))
          rt_mod.set_input(input_data=in_data)
          rt_mod.set_input(**params)
          rt_mod.run()
          res = rt_mod.get_output(0).numpy()
          np.testing.assert_equal(res, verify_output_data)
          assert res.dtype == out_dtype
  
file_path: tvm/tests/python/relay/test_op_qnn_dequantize.py
imports: import tvm
  from tvm import te
  import numpy
  from tvm import relay
  from tvm.contrib import graph_executor
  from tvm.relay.testing import run_infer_type
label_desc: Use image node_id 1 for calling a global function with example usage: dequantize_test_driver(in_dtype, quant_args, in_data, verify_output_data, axis, out_dtype) without return types