class_docstr: Integrated the analysis along a path
  
  This analyzer:
  * creates a path from input to reference image.
  * creates `steps` number of intermediate inputs and
    creates an analysis for them.
  * sums the analyses and multiplies them with the input-reference_input.
  
  This wrapper is used to implement Integrated Gradients.
  We refer to the paper for further information.
  
  :param subanalyzer: The analyzer to be wrapped.
  :param steps: Number of steps for integration.
  :param reference_inputs: The reference input.
code: def _augment(self, Xs):
      difference = self._compute_difference(Xs)
      self._keras_difference = difference
      # Make broadcastable.
      difference = [
          ilayers.Reshape((-1, 1) + kbackend.int_shape(x)[1:])(x)
          for x in difference
      ]
  
      # Compute path steps.
      multiply_with_linspace = ilayers.MultiplyWithLinspace(
          0, 1, n=self._augment_by_n, axis=1
      )
      path_steps = [multiply_with_linspace(d) for d in difference]
  
      reference_inputs = self._keras_get_constant_inputs()
      ret = [
          klayers.Add()([x, p])
          for x, p in zip(reference_inputs, path_steps)
      ]
      ret = [
          ilayers.Reshape((-1,) + kbackend.int_shape(x)[2:])(x)
          for x in ret
      ]
      return ret
  
imports: from __future__ import annotations
  import numpy
  import tensorflow.keras.backend
  import tensorflow.keras.layers
  import tensorflow.keras.models
  import innvestigate.backend
  import innvestigate.layers
  from innvestigate.analyzer.base import AnalyzerBase
  from innvestigate.analyzer.network_base import AnalyzerNetworkBase
  from innvestigate.backend.types import OptionalList, Tensor
label_desc: Use image node_id 5 for calling the PathIntegrator obj's underlying member method code with example usage: obj._augment(Xs) and returns: ret