code: def explain(self, inp, ind=None, raw_inp=None):
      stdev = self.stdev_spread * (inp.max() - inp.min())
  
      total_gradients = 0
  
      for i in range(self.nsamples):
          noise = torch.randn_like(inp) * stdev
  
          noisy_inp = inp + noise
          noisy_inp.retain_grad()
          grad = self.base_explainer.explain(noisy_inp, ind)
  
          if self.magnitude:
              total_gradients += grad**2
          else:
              total_gradients += grad
  
      return total_gradients / self.nsamples
  
imports: import numpy
  from torch.autograd import Variable, Function
  import torch
  import types
label_desc: Use image node_id 2 for calling the SmoothGradExplainer obj's underlying member method code with example usage: obj.explain(inp, ind, raw_inp) and returns: unknown