class_docstr: Parameters
  ----------
  model : torch.nn.Module
      Model to be pruned
  config_list : list
      Supported keys:
          - sparsity : This is to specify the sparsity operations to be compressed to.
          - op_types : Only Conv2d is supported in FPGM Pruner.
  optimizer: torch.optim.Optimizer
          Optimizer used to train model
  dependency_aware: bool
      If prune the model in a dependency-aware way. If it is `True`, this pruner will
      prune the model according to the l2-norm of weights and the channel-dependency or
      group-dependency of the model. In this way, the pruner will force the conv layers
      that have dependencies to prune the same channels, so the speedup module can better
      harvest the speed benefit from the pruned model. Note that, if this flag is set True
      , the dummy_input cannot be None, because the pruner needs a dummy input to trace the
      dependency between the conv layers.
  dummy_input : torch.Tensor
      The dummy input to analyze the topology constraints. Note that, the dummy_input
      should on the same device with the model.
class_docstr_tok: ["Parameters","--","--","--","--","--","model",":","torch.nn.Module","Model","to","be","pruned","config_list",":","list","Supported","keys",":","-","sparsity",":","This","is","to","specify","the","sparsity","operations","to","be","compressed","to",".","-","op_types",":","Only","Conv2d","is","supported","in","FPGM","Pruner",".","optimizer",":","torch.optim.Optimizer","Optimizer","used","to","train","model","dependency_aware",":","bool","If","prune","the","model","in","a","dependency-aware","way",".","If","it","is","`","True","`",",","this","pruner","will","prune","the","model","according","to","the","l2-norm","of","weights","and","the","channel-dependency","or","group-dependency","of","the","model",".","In","this","way",",","the","pruner","will","force","the","conv","layers","that","have","dependencies","to","prune","the","same","channels",",","so","the","speedup","module","can","better","harvest","the","speed","benefit","from","the","pruned","model",".","Note","that",",","if","this","flag","is","set","True",",","the","dummy_input","can","not","be","None",",","because","the","pruner","needs","a","dummy","input","to","trace","the","dependency","between","the","conv","layers",".","dummy_input",":","torch.Tensor","The","dummy","input","to","analyze","the","topology","constraints",".","Note","that",",","the","dummy_input","should","on","the","same","device","with","the","model","."]
code: def __init__(
      self,
      model,
      config_list,
      optimizer=None,
      dependency_aware=False,
      dummy_input=None,
  ):
      super().__init__(
          model,
          config_list,
          pruning_algorithm="fpgm",
          dependency_aware=dependency_aware,
          dummy_input=dummy_input,
          optimizer=optimizer,
      )
  
imports: import logging
  from schema import And, Optional, SchemaError
  from .._graph_utils import TorchModuleGraph
  from ..utils.shape_dependency import ChannelDependency, GroupDependency
  from .constants import MASKER_DICT
  from ..utils.config_validation import CompressorSchema
  from ..compressor import Pruner
label_desc: Use image node_id 1 to create a new FPGMPruner object from inherited base classes: _StructuredFilterPruner with example: obj = FPGMPruner(model, config_list, optimizer, dependency_aware, dummy_input)