class_docstr: Prune to an exact pruning level specification
  
  Attributes
  ----------
  mask_dict : dict
      Dictionary for saving masks, `key` should be layer name and
      `value` should be a tensor which has the same shape with layer's weight
docstr: Pruners should overload this method to provide mask for weight tensors.
  The mask must have the same shape and type comparing to the weight.
  It will be applied with `mul()` operation on the weight.
  This method is effectively hooked to `forward()` method of the model.
  
  Parameters
  ----------
  wrapper : Module
      calculate mask for `wrapper.module`'s weight
docstr_tok: ["Pruners","should","overload","this","method","to","provide","mask","for","weight","tensors",".","The","mask","must","have","the","same","shape","and","type","comparing","to","the","weight",".","It","will","be","applied","with","`","mul","(",")","`","operation","on","the","weight",".","This","method","is","effectively","hooked","to","`","forward","(",")","`","method","of","the","model",".","Parameters","--","--","--","--","--","wrapper",":","Module","calculate","mask","for","`","wrapper.module","`","'s","weight"]
code: def calc_mask(self, wrapper, **kwargs):
      """
      Pruners should overload this method to provide mask for weight tensors.
      The mask must have the same shape and type comparing to the weight.
      It will be applied with `mul()` operation on the weight.
      This method is effectively hooked to `forward()` method of the model.
  
      Parameters
      ----------
      wrapper : Module
          calculate mask for `wrapper.module`'s weight
      """
      raise NotImplementedError("Pruners must overload calc_mask()")
  
imports: import types
  import logging
  import torch
  from .None import default_layers
label_desc: Use image node_id 4 for calling the Pruner obj's underlying member method code with example usage: obj.calc_mask(wrapper) without return types