class_docstr: Wrapper that adds noise to the input and averages over analyses
  
  This wrapper creates new samples by adding Gaussian noise
  to the input. The final analysis is an average of the returned analyses.
  
  :param subanalyzer: The analyzer to be wrapped.
  :param noise_scale: The stddev of the applied noise.
  :param augment_by_n: Number of samples to create.
code: def _augment(self, Xs: OptionalList[Tensor]) -> list[Tensor]:
      repeat = ilayers.Repeat(self._augment_by_n)
      add_noise = ilayers.AddGaussianNoise()
      reshape = ilayers.AugmentationToBatchAxis(self._augment_by_n)
  
      ret = [
          reshape(add_noise(repeat(X))) for X in ibackend.to_list(Xs)
      ]
      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 2 for calling the GaussianSmoother obj's underlying member method code with example usage: obj._augment(Xs) and returns: ret