class_docstr: Perform SmoothGrad algorithm for a given input
  
  Paper: [SmoothGrad: removing noise by adding noise](https://arxiv.org/abs/1706.03825)
docstr: Compute SmoothGrad for a specific class index
  
  Args:
      validation_data (Tuple[np.ndarray, Optional[np.ndarray]]): Validation data
          to perform the method on. Tuple containing (x, y).
      model (tf.keras.Model): tf.keras model to inspect
      class_index (int): Index of targeted class
      num_samples (int): Number of noisy samples to generate for each input image
      noise (float): Standard deviation for noise normal distribution
  
  Returns:
      np.ndarray: Grid of all the smoothed gradients
code: def explain(
      self,
      validation_data,
      model,
      class_index,
      num_samples=5,
      noise=1.0,
  ):
      """
      Compute SmoothGrad for a specific class index
  
      Args:
          validation_data (Tuple[np.ndarray, Optional[np.ndarray]]): Validation data
              to perform the method on. Tuple containing (x, y).
          model (tf.keras.Model): tf.keras model to inspect
          class_index (int): Index of targeted class
          num_samples (int): Number of noisy samples to generate for each input image
          noise (float): Standard deviation for noise normal distribution
  
      Returns:
          np.ndarray: Grid of all the smoothed gradients
      """
      images, _ = validation_data
  
      noisy_images = SmoothGrad.generate_noisy_images(
          images, num_samples, noise
      )
  
      smoothed_gradients = SmoothGrad.get_averaged_gradients(
          noisy_images, model, class_index, num_samples
      )
  
      grayscale_gradients = transform_to_normalized_grayscale(
          tf.abs(smoothed_gradients)
      ).numpy()
  
      grid = grid_display(grayscale_gradients)
  
      return grid
  
file_path: tf-explain/tf_explain/core/smoothgrad.py
imports: import numpy
  import tensorflow
  from tf_explain.utils.display import grid_display
  from tf_explain.utils.image import transform_to_normalized_grayscale
  from tf_explain.utils.saver import save_grayscale
label_desc: Use image node_id 1 for calling the SmoothGrad obj's underlying member method code with example usage: obj.explain(validation_data, model, class_index, num_samples, noise) and returns: grid