class_docstr: Extends LayerDeepLift and DeepLiftShap algorithms and approximates SHAP
  values for given input `layer`.
  For each input sample - baseline pair it computes DeepLift attributions
  with respect to inputs or outputs of given `layer` 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","LayerDeepLift","and","DeepLiftShap","algorithms","and","approximates","SHAP","values","for","given","input","`","layer","`",".","For","each","input","sample","-","baseline","pair","it","computes","DeepLift","attributions","with","respect","to","inputs","or","outputs","of","given","`","layer","`","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 attributions are computed.
                  The size and dimensionality of the attributions
                  corresponds to the size and dimensionality of the layer's
                  input or output depending on whether we attribute to the
                  inputs or outputs of the layer.
      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 LayerDeepLiftShap, if `multiply_by_inputs`
                  is set to True, final sensitivity scores are being
                  multiplied by
                  layer activations for inputs - layer activations for 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","attributions","are","computed",".","The","size","and","dimensionality","of","the","attributions","corresponds","to","the","size","and","dimensionality","of","the","layer's","input","or","output","depending","on","whether","we","attribute","to","the","inputs","or","outputs","of","the","layer",".","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","LayerDeepLiftShap",",","if","`","multiply_by_inputs","`","is","set","to","True",",","final","sensitivity","scores","are","being","multiplied","by","layer","activations","for","inputs","-","layer","activations","for","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 attributions are computed.
                      The size and dimensionality of the attributions
                      corresponds to the size and dimensionality of the layer's
                      input or output depending on whether we attribute to the
                      inputs or outputs of the layer.
          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 LayerDeepLiftShap, if `multiply_by_inputs`
                      is set to True, final sensitivity scores are being
                      multiplied by
                      layer activations for inputs - layer activations for baselines
                      This flag applies only if `custom_attribution_func` is
                      set to None.
      """
      LayerDeepLift.__init__(self, model, layer)
      DeepLiftShap.__init__(self, model, multiply_by_inputs)
  
imports: import typing
  from typing import Any, Callable, cast, Sequence, Tuple, Union
  import torch
  from captum._utils.common import _expand_target, _format_additional_forward_args, _format_baseline, _format_tensor_into_tuples, ExpansionTypes
  from captum._utils.gradient import compute_layer_gradients_and_eval
  from captum._utils.typing import BaselineType, Literal, TargetType, TensorOrTupleOfTensorsGeneric
  from captum.attr._core.deep_lift import DeepLift, DeepLiftShap
  from captum.attr._utils.attribution import LayerAttribution
  from captum.attr._utils.common import _call_custom_attribution_func, _compute_conv_delta_and_format_attrs, _format_callable_baseline, _tensorize_baseline, _validate_input
  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 LayerDeepLiftShap object from inherited base classes: LayerDeepLift, DeepLiftShap with example: obj = LayerDeepLiftShap(model, layer, multiply_by_inputs)