class_docstr: Benchmarks 3 different fake quantize per channel operators.
code: def init(self, N, C, H, W, zero_point_dtype, nbits, device, op_func):
      self.quant_min = 0
      self.quant_max = 2**nbits - 1
      self.quant_range = 2**nbits
      # Axis is chosen with respect to the number of channels: C.
      self.axis = 1
      self.input = nn.Parameter(
          torch.rand(
              N,
              C,
              H,
              W,
              dtype=torch.float,
              device=device,
              requires_grad=self.auto_set(),
          )
      )
  
      if op_func.__name__ == "fakeQuantizePerChannelOriginalKernel":
          self.scale = torch.ones(
              C, device=device, dtype=torch.float32, requires_grad=False
          )
          self.zero_point = torch.zeros(
              C,
              device=device,
              dtype=zero_point_dtype,
              requires_grad=False,
          )
      else:
          self.scale = nn.Parameter(
              torch.ones(C, device=device, dtype=torch.float32),
              requires_grad=self.auto_set(),
          )
          self.zero_point = nn.Parameter(
              torch.zeros(C, device=device, dtype=torch.float32),
              requires_grad=self.auto_set(),
          )
  
      self.inputs = {
          "input": self.input,
          "scale": self.scale,
          "zero_point": self.zero_point,
          "axis": self.axis,
          "quant_min": self.quant_min,
          "quant_max": self.quant_max,
      }
  
      self.op_func = op_func
  
imports: import torch
  import torch.ao.nn.quantized
  import torch.ao.quantization
  import torch.nn
  import operator_benchmark
label_desc: Use image node_id 1 for calling the FakeQuantizePerChannelOpBenchmark obj's underlying member method code with example usage: obj.init(N, C, H, W, zero_point_dtype, nbits, device, op_func) without return types