class_docstr: This class is used to detect if any Linear or Conv layers in a model utilize per_channel quantization.
  Only Linear and Conv layers can use per_channel as of now so only these two are currently checked.
  
  per_channel quantization can lead to major benefits in the form of accuracy.
  Therefore, if the backend used by the user supports it, it is recommended to use
  
  Args:
      backend (str, optional): the backend the user wishes to use in production
          Default value is current torch.backends.quantized.engine
class_docstr_tok: ["This","class","is","used","to","detect","if","any","Linear","or","Conv","layers","in","a","model","utilize","per_channel","quantization",".","Only","Linear","and","Conv","layers","can","use","per_channel","as","of","now","so","only","these","two","are","currently","checked",".","per_channel","quantization","can","lead","to","major","benefits","in","the","form","of","accuracy",".","Therefore",",","if","the","backend","used","by","the","user","supports","it",",","it","is","recommended","to","use","Args",":","backend","(","str",",","optional",")",":","the","backend","the","user","wishes","to","use","in","production","Default","value","is","current","torch.backends.quantized.engine"]
code: def __init__(self, backend: str = torch.backends.quantized.engine):
      super().__init__()
  
      # store the backend information
      self.backend_chosen = backend
      self.supported_modules = set()
      if (
          self.backend_chosen
          in self.DEFAULT_BACKEND_PER_CHANNEL_SUPPORTED_MODULES
      ):
          self.supported_modules = (
              self.DEFAULT_BACKEND_PER_CHANNEL_SUPPORTED_MODULES[
                  self.backend_chosen
              ]
          )
      else:
          raise ValueError(
              f"Not configured to work with {self.backend_chosen}. Try a different default backend"
          )
  
imports: from typing import Any, Dict, Set, Tuple, Callable, List
  import torch
  import torch.nn
  import torch.ao.nn.qat
  from abc import ABC, abstractmethod
  from torch.ao.quantization.fake_quantize import FakeQuantize
  from torch.ao.quantization.fx.graph_module import GraphModule
  from torch.ao.quantization.fx._model_report.model_report_observer import ModelReportObserver
  from torch.ao.quantization.qconfig import QConfig, default_qconfig, _assert_valid_qconfig
  from torch.ao.quantization.observer import ObserverBase, default_dynamic_quant_observer, default_per_channel_weight_observer, default_observer, default_weight_observer
  from torch.ao.quantization.fx._equalize import default_equalization_qconfig, EqualizationQConfig
  from torch.ao.quantization.observer import _is_activation_post_process
label_desc: Use image node_id 1 to create a new PerChannelDetector object from inherited base classes: DetectorBase with example: obj = PerChannelDetector(backend)