class_docstr: Computes element-wise product of gradient and activation for selected
  layer on given inputs.
class_docstr_tok: ["Computes","element-wise","product","of","gradient","and","activation","for","selected","layer","on","given","inputs","."]
docstr: Args:
  
      forward_func (Callable): The forward function of the model or any
                  modification of it
      layer (torch.nn.Module or list of torch.nn.Module): Layer or layers
                    for which attributions are computed.
                    Output size of attribute matches this layer's input or
                    output dimensions, depending on whether we attribute to
                    the inputs or outputs of the layer, corresponding to
                    attribution of each neuron in the input or output of
                    this layer. If multiple layers are provided, attributions
                    are returned as a list, each element corresponding to the
                    attributions of the corresponding layer.
      device_ids (list[int]): Device ID list, necessary only if forward_func
                  applies a DataParallel model. This allows reconstruction of
                  intermediate outputs from batched results across devices.
                  If forward_func is given as the DataParallel model itself,
                  then it is not necessary to provide this argument.
      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 this 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 layer gradient x activation, if `multiply_by_inputs`
                  is set to True, final sensitivity scores are being multiplied by
                  layer activations for inputs.
docstr_tok: ["Args",":","forward_func","(","Callable",")",":","The","forward","function","of","the","model","or","any","modification","of","it","layer","(","torch.nn.Module","or","list","of","torch.nn.Module",")",":","Layer","or","layers","for","which","attributions","are","computed",".","Output","size","of","attribute","matches","this","layer","'s","input","or","output","dimensions",",","depending","on","whether","we","attribute","to","the","inputs","or","outputs","of","the","layer",",","corresponding","to","attribution","of","each","neuron","in","the","input","or","output","of","this","layer",".","If","multiple","layers","are","provided",",","attributions","are","returned","as","a","list",",","each","element","corresponding","to","the","attributions","of","the","corresponding","layer",".","device_ids","(","list","[","int","]",")",":","Device","ID","list",",","necessary","only","if","forward_func","applies","a","DataParallel","model",".","This","allows","reconstruction","of","intermediate","outputs","from","batched","results","across","devices",".","If","forward_func","is","given","as","the","DataParallel","model","itself",",","then","it","is","not","necessary","to","provide","this","argument",".","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","this","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","layer","gradient","x","activation",",","if","`","multiply_by_inputs","`","is","set","to","True",",","final","sensitivity","scores","are","being","multiplied","by","layer","activations","for","inputs","."]
code: def __init__(
      self,
      forward_func: Callable,
      layer: ModuleOrModuleList,
      device_ids: Union[None, List[int]] = None,
      multiply_by_inputs: bool = True,
  ) -> None:
      r"""
      Args:
  
          forward_func (Callable): The forward function of the model or any
                      modification of it
          layer (torch.nn.Module or list of torch.nn.Module): Layer or layers
                        for which attributions are computed.
                        Output size of attribute matches this layer's input or
                        output dimensions, depending on whether we attribute to
                        the inputs or outputs of the layer, corresponding to
                        attribution of each neuron in the input or output of
                        this layer. If multiple layers are provided, attributions
                        are returned as a list, each element corresponding to the
                        attributions of the corresponding layer.
          device_ids (list[int]): Device ID list, necessary only if forward_func
                      applies a DataParallel model. This allows reconstruction of
                      intermediate outputs from batched results across devices.
                      If forward_func is given as the DataParallel model itself,
                      then it is not necessary to provide this argument.
          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 this 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 layer gradient x activation, if `multiply_by_inputs`
                      is set to True, final sensitivity scores are being multiplied by
                      layer activations for inputs.
  
      """
      LayerAttribution.__init__(self, forward_func, layer, device_ids)
      GradientAttribution.__init__(self, forward_func)
      self._multiply_by_inputs = multiply_by_inputs
  
file_path: captum/captum/attr/_core/layer/layer_gradient_x_activation.py
imports: from typing import Any, Callable, List, Tuple, Union
  from captum._utils.common import _format_additional_forward_args, _format_output, _format_tensor_into_tuples
  from captum._utils.gradient import compute_layer_gradients_and_eval
  from captum._utils.typing import ModuleOrModuleList, TargetType
  from captum.attr._utils.attribution import GradientAttribution, LayerAttribution
  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 LayerGradientXActivation object from inherited base classes: LayerAttribution, GradientAttribution with example: obj = LayerGradientXActivation(forward_func, layer, device_ids, multiply_by_inputs)