class_docstr: Dummy quantizer that annotates conv bn in such a way that the weights
  are quantized per channel to int32.
class_docstr_tok: ["Dummy","quantizer","that","annotates","conv","bn","in","such","a","way","that","the","weights","are","quantized","per","channel","to","int32","."]
code: def annotate(
      self, model: torch.fx.GraphModule
  ) -> torch.fx.GraphModule:
      conv_node, _, getitem_node = _get_conv_bn_getitem_nodes(model)
      act_qspec = QuantizationSpec(
          dtype=torch.uint8,
          quant_min=0,
          quant_max=255,
          qscheme=torch.per_tensor_affine,
          observer_or_fake_quant_ctr=default_fake_quant,
      )
      weight_qspec = QuantizationSpec(
          dtype=torch.int32,
          quant_min=0,
          quant_max=2**31 - 1,
          qscheme=torch.per_channel_affine,
          observer_or_fake_quant_ctr=FusedMovingAvgObsFakeQuantize.with_args(
              observer=MovingAveragePerChannelMinMaxObserver,
          ),
      )
      conv_node.meta[
          "quantization_annotation"
      ] = QuantizationAnnotation(
          input_qspec_map={
              conv_node.args[0]: act_qspec,
              conv_node.args[1]: weight_qspec,
          },
          _annotated=True,
      )
      getitem_node.meta[
          "quantization_annotation"
      ] = QuantizationAnnotation(
          output_qspec=act_qspec,
          _annotated=True,
      )
      return model
  
imports: import copy
  import operator
  import unittest
  from typing import Any, Optional, Tuple, Type
  import torch
  from torch._export import capture_pre_autograd_graph
  from torch.ao.quantization import default_fake_quant, FusedMovingAvgObsFakeQuantize, MovingAverageMinMaxObserver, MovingAveragePerChannelMinMaxObserver, QConfigMapping
  from torch.ao.quantization.backend_config import get_qnnpack_backend_config
  from torch.ao.quantization.qconfig import default_per_channel_symmetric_qnnpack_qat_qconfig, default_symmetric_qnnpack_qat_qconfig
  from torch.ao.quantization.quantize_fx import prepare_qat_fx
  from torch.ao.quantization.quantize_pt2e import _convert_to_reference_decomposed_fx, convert_pt2e, prepare_pt2e, prepare_qat_pt2e
  from torch.ao.quantization.quantizer import DerivedQuantizationSpec, QuantizationAnnotation, QuantizationSpec, Quantizer
  from torch.ao.quantization.quantizer.xnnpack_quantizer import get_symmetric_quantization_config, XNNPACKQuantizer
  from torch.testing._internal.common_cuda import TEST_CUDA
  from torch.testing._internal.common_quantization import NodeSpec, QuantizationTestCase, skip_if_no_torchvision, skipIfNoQNNPACK
  from torch.testing._internal.common_quantized import override_quantized_engine
label_desc: Use image node_id 1 for calling the ConvBnInt32WeightQuantizer obj's underlying member method code with example usage: obj.annotate(model) and returns: model