code: def explain(self, inp, ind=None, raw_inp=None):
      self._reset_intermediate_lists()
      _ = super(GradCAMExplainer, self)._backprop(inp, ind)
      self.handle_forward_hook.remove()
      self.handle_backward_hook.remove()
      if len(self.intermediate_grad):
          grad = self.intermediate_grad[0]
          act = self.intermediate_act[0]
  
          weights = grad.sum(-1).sum(-1).unsqueeze(-1).unsqueeze(-1)
          cam = weights * act
          cam = cam.sum(1).unsqueeze(1)
  
          cam = torch.clamp(cam, min=0)
          return cam
      else:
          return None
  
file_path: tensorwatch/tensorwatch/saliency/gradcam.py
imports: import torch
  from .backprop import VanillaGradExplainer
label_desc: Use image node_id 4 for calling the GradCAMExplainer obj's underlying member method code with example usage: obj.explain(inp, ind, raw_inp) and returns: cam, None