class_docstr: Extends NeuronAttribution and uses LayerDeepLiftShap algorithms and
  approximates SHAP values for given input `layer` and `neuron_selector`.
  For each input sample - baseline pair it computes DeepLift attributions
  with respect to inputs or outputs of given `layer` and `neuron_selector`
  averages resulting attributions across baselines. Whether to compute the
  attributions with respect to the inputs or outputs of the layer is defined
  by the input flag `attribute_to_layer_input`.
  More details about the algorithm can be found here:
  
  https://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions.pdf
  
  Note that the explanation model:
      1. Assumes that input features are independent of one another
      2. Is linear, meaning that the explanations are modeled through
          the additive composition of feature effects.
  
  Although, it assumes a linear model for each explanation, the overall
  model across multiple explanations can be complex and non-linear.
class_docstr_tok: ["Extends","NeuronAttribution","and","uses","LayerDeepLiftShap","algorithms","and","approximates","SHAP","values","for","given","input","`","layer","`","and","`","neuron_selector","`",".","For","each","input","sample","-","baseline","pair","it","computes","DeepLift","attributions","with","respect","to","inputs","or","outputs","of","given","`","layer","`","and","`","neuron_selector","`","averages","resulting","attributions","across","baselines",".","Whether","to","compute","the","attributions","with","respect","to","the","inputs","or","outputs","of","the","layer","is","defined","by","the","input","flag","`","attribute_to_layer_input","`",".","More","details","about","the","algorithm","can","be","found","here",":","https",":","\/\/papers.nips.cc\/paper\/7062-a-unified-approach-to-interpreting-model-predictions.pdf","Note","that","the","explanation","model",":","1",".","Assumes","that","input","features","are","independent","of","one","another","2",".","Is","linear",",","meaning","that","the","explanations","are","modeled","through","the","additive","composition","of","feature","effects",".","Although",",","it","assumes","a","linear","model","for","each","explanation",",","the","overall","model","across","multiple","explanations","can","be","complex","and","non-linear","."]
docstr: Args:
  
      model (nn.Module):  The reference to PyTorch model instance.
      layer (torch.nn.Module): Layer for which neuron attributions are computed.
                  Attributions for a particular neuron for the input or output
                  of this layer are computed using the argument neuron_selector
                  in the attribute method.
                  Currently, only layers with a single tensor input and output
                  are supported.
      multiply_by_inputs (bool, optional): Indicates whether to factor
                  model inputs' multiplier in the final attribution scores.
                  In the literature this is also known as local vs global
                  attribution. If inputs' multiplier isn't factored in
                  then that type of attribution method is also called local
                  attribution. If it is, then that type of attribution
                  method is called global.
                  More detailed can be found here:
                  https://arxiv.org/abs/1711.06104
  
                  In case of Neuron DeepLift Shap, if `multiply_by_inputs`
                  is set to True, final sensitivity scores
                  are being multiplied by (inputs - baselines).
                  This flag applies only if `custom_attribution_func` is
                  set to None.
docstr_tok: ["Args",":","model","(","nn.Module",")",":","The","reference","to","PyTorch","model","instance",".","layer","(","torch.nn.Module",")",":","Layer","for","which","neuron","attributions","are","computed",".","Attributions","for","a","particular","neuron","for","the","input","or","output","of","this","layer","are","computed","using","the","argument","neuron_selector","in","the","attribute","method",".","Currently",",","only","layers","with","a","single","tensor","input","and","output","are","supported",".","multiply_by_inputs","(","bool",",","optional",")",":","Indicates","whether","to","factor","model","inputs","'","multiplier","in","the","final","attribution","scores",".","In","the","literature","this","is","also","known","as","local","vs","global","attribution",".","If","inputs","'","multiplier","is","n't","factored","in","then","that","type","of","attribution","method","is","also","called","local","attribution",".","If","it","is",",","then","that","type","of","attribution","method","is","called","global",".","More","detailed","can","be","found","here",":","https",":","\/\/arxiv.org\/abs\/1711.06104","In","case","of","Neuron","DeepLift","Shap",",","if","`","multiply_by_inputs","`","is","set","to","True",",","final","sensitivity","scores","are","being","multiplied","by","(","inputs","-","baselines",")",".","This","flag","applies","only","if","`","custom_attribution_func","`","is","set","to","None","."]
code: def __init__(
      self,
      model: Module,
      layer: Module,
      multiply_by_inputs: bool = True,
  ) -> None:
      r"""
      Args:
  
          model (nn.Module):  The reference to PyTorch model instance.
          layer (torch.nn.Module): Layer for which neuron attributions are computed.
                      Attributions for a particular neuron for the input or output
                      of this layer are computed using the argument neuron_selector
                      in the attribute method.
                      Currently, only layers with a single tensor input and output
                      are supported.
          multiply_by_inputs (bool, optional): Indicates whether to factor
                      model inputs' multiplier in the final attribution scores.
                      In the literature this is also known as local vs global
                      attribution. If inputs' multiplier isn't factored in
                      then that type of attribution method is also called local
                      attribution. If it is, then that type of attribution
                      method is called global.
                      More detailed can be found here:
                      https://arxiv.org/abs/1711.06104
  
                      In case of Neuron DeepLift Shap, if `multiply_by_inputs`
                      is set to True, final sensitivity scores
                      are being multiplied by (inputs - baselines).
                      This flag applies only if `custom_attribution_func` is
                      set to None.
      """
      NeuronAttribution.__init__(self, model, layer)
      GradientAttribution.__init__(self, model)
      self._multiply_by_inputs = multiply_by_inputs
  
file_path: captum/captum/attr/_core/neuron/neuron_deep_lift.py
imports: from typing import Any, Callable, cast, Tuple, Union
  from captum._utils.gradient import construct_neuron_grad_fn
  from captum._utils.typing import BaselineType, TensorOrTupleOfTensorsGeneric
  from captum.attr._core.deep_lift import DeepLift, DeepLiftShap
  from captum.attr._utils.attribution import GradientAttribution, NeuronAttribution
  from captum.log import log_usage
  from torch import Tensor
  from torch.nn import Module
label_desc: Use image node_id 1 to create a new NeuronDeepLiftShap object from inherited base classes: NeuronAttribution, GradientAttribution with example: obj = NeuronDeepLiftShap(model, layer, multiply_by_inputs)