class_docstr: Implements gradient SHAP for a neuron in a hidden layer based on the
  implementation from SHAP's primary author. For reference, please, view:
  
  https://github.com/slundberg/shap\
  #deep-learning-example-with-gradientexplainer-tensorflowkeraspytorch-models
  
  A Unified Approach to Interpreting Model Predictions
  https://papers.nips.cc/paper\
  7062-a-unified-approach-to-interpreting-model-predictions
  
  GradientShap approximates SHAP values by computing the expectations of
  gradients by randomly sampling from the distribution of baselines/references.
  It adds white noise to each input sample `n_samples` times, selects a
  random baseline from baselines' distribution and a random point along the
  path between the baseline and the input, and computes the gradient of the
  neuron with index `neuron_selector` with respect to those selected random
  points. The final SHAP values represent the expected values of
  `gradients * (inputs - baselines)`.
  
  GradientShap makes an assumption that the input features are independent
  and that the explanation model is linear, meaning that the explanations
  are modeled through the additive composition of feature effects.
  Under those assumptions, SHAP value can be approximated as the expectation
  of gradients that are computed for randomly generated `n_samples` input
  samples after adding gaussian noise `n_samples` times to each input for
  different baselines/references.
  
  In some sense it can be viewed as an approximation of integrated gradients
  by computing the expectations of gradients for different baselines.
  
  Current implementation uses Smoothgrad from :class:`.NoiseTunnel` in order to
  randomly draw samples from the distribution of baselines, add noise to input
  samples and compute the expectation (smoothgrad).
class_docstr_tok: ["Implements","gradient","SHAP","for","a","neuron","in","a","hidden","layer","based","on","the","implementation","from","SHAP","'s","primary","author",".","For","reference",",","please",",","view",":","https",":","\/\/github.com\/slundberg\/shap\\","#","deep-learning-example-with-gradientexplainer-tensorflowkeraspytorch-models","A","Unified","Approach","to","Interpreting","Model","Predictions","https",":","\/\/papers.nips.cc\/paper\\","7062-a-unified-approach-to-interpreting-model-predictions","GradientShap","approximates","SHAP","values","by","computing","the","expectations","of","gradients","by","randomly","sampling","from","the","distribution","of","baselines\/references",".","It","adds","white","noise","to","each","input","sample","`","n_samples","`","times",",","selects","a","random","baseline","from","baselines","'","distribution","and","a","random","point","along","the","path","between","the","baseline","and","the","input",",","and","computes","the","gradient","of","the","neuron","with","index","`","neuron_selector","`","with","respect","to","those","selected","random","points",".","The","final","SHAP","values","represent","the","expected","values","of","`","gradients","*","(","inputs","-","baselines",")","`",".","GradientShap","makes","an","assumption","that","the","input","features","are","independent","and","that","the","explanation","model","is","linear",",","meaning","that","the","explanations","are","modeled","through","the","additive","composition","of","feature","effects",".","Under","those","assumptions",",","SHAP","value","can","be","approximated","as","the","expectation","of","gradients","that","are","computed","for","randomly","generated","`","n_samples","`","input","samples","after","adding","gaussian","noise","`","n_samples","`","times","to","each","input","for","different","baselines\/references",".","In","some","sense","it","can","be","viewed","as","an","approximation","of","integrated","gradients","by","computing","the","expectations","of","gradients","for","different","baselines",".","Current","implementation","uses","Smoothgrad","from",":","class",":","`",".NoiseTunnel","`","in","order","to","randomly","draw","samples","from","the","distribution","of","baselines",",","add","noise","to","input","samples","and","compute","the","expectation","(","smoothgrad",")","."]
code: def multiplies_by_inputs(self):
      return self._multiply_by_inputs
  
file_path: captum/captum/attr/_core/neuron/neuron_gradient_shap.py
imports: from typing import Any, Callable, List, Tuple, Union
  from captum._utils.gradient import construct_neuron_grad_fn
  from captum._utils.typing import TensorOrTupleOfTensorsGeneric
  from captum.attr._core.gradient_shap import GradientShap
  from captum.attr._utils.attribution import GradientAttribution, NeuronAttribution
  from captum.log import log_usage
  from torch.nn import Module
label_desc: Use image node_id 3 for calling the NeuronGradientShap obj's underlying member method code with example usage: obj.multiplies_by_inputs() and returns: self