code: def _run(self, x):  # type: ignore
      # args: x, y_scale, zero_point
      dtype, qmin, qmax = np.uint8, 0, 255
      maxx = np.float32(np.maximum(0, np.max(x)))
      minx = np.float32(np.minimum(0, np.min(x)))
      y_scale = np.float32(
          1.0 if maxx == minx else (maxx - minx)
      ) / np.float32(qmax - qmin)
  
      # scale = max == min ? 1.0f : (max - min) / float(qmax - qmin);
  
      initial_zero_point = np.float32(qmin) - minx / y_scale
      zp = max(qmin, min(qmax, initial_zero_point))
      zpi = np.rint(zp)
  
      y = np.clip(np.rint(x / y_scale) + zpi, qmin, qmax)
      return (
          y.astype(dtype),
          np.array(y_scale.astype(x.dtype)),
          np.array(zpi.astype(dtype)),
      )
  
imports: import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 1 for calling the DynamicQuantizeLinear obj's underlying member method code with example usage: obj._run(x) and returns: y,  np,  np