class_docstr: Quantizer defined in:
  Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
  http://openaccess.thecvf.com/content_cvpr_2018/papers/Jacob_Quantization_and_Training_CVPR_2018_paper.pdf
code: def quantize_output(self, output, wrapper, **kwargs):
      config = wrapper.config
      module = wrapper.module
      output_bits = get_bits_length(config, "output")
      quant_start_step = config.get("quant_start_step", 0)
      assert output_bits >= 1, "quant bits length should be at least 1"
  
      if quant_start_step > self.bound_model.steps:
          (
              module.tracked_min_biased,
              module.tracked_max_biased,
          ) = torch.min(output), torch.max(output)
          return output
  
      # we dont update output quantization parameters in evaluation stage
      if wrapper.training:
          current_min, current_max = torch.min(output), torch.max(
              output
          )
          module.tracked_min_biased = update_ema(
              module.tracked_min_biased, current_min, module.ema_decay
          )
          module.tracked_max_biased = update_ema(
              module.tracked_max_biased, current_max, module.ema_decay
          )
          module.scale, module.zero_point = update_quantization_param(
              output_bits,
              module.tracked_min_biased,
              module.tracked_max_biased,
          )
      out = self._quantize(output_bits, module, output)
      out = self._dequantize(module, out)
      return out
  
imports: import logging
  import copy
  import torch
  from schema import Schema, And, Or, Optional
  from ..utils.config_validation import CompressorSchema
  from ..compressor import Quantizer, QuantGrad, QuantType
label_desc: Use image node_id 6 for calling the QAT_Quantizer obj's underlying member method code with example usage: obj.quantize_output(output, wrapper) and returns: out, output