class_docstr: Interface for wrappers that augment the input and reduce the analysis.
  
  This class is an interface for wrappers that:
  * augment the input to the analyzer by creating new samples.
  * reduce the returned analysis to match the initial input shapes.
  
  :param subanalyzer: The analyzer to be wrapped.
  :param augment_by_n: Number of samples to create.
code: def create_analyzer_model(self):
      self._subanalyzer.create_analyzer_model()
  
      if self._subanalyzer._n_debug_output > 0:
          raise NotImplementedError(
              "No debug output at subanalyzer is supported."
          )
  
      model = self._subanalyzer._analyzer_model
      if None in model.input_shape[1:]:
          raise ValueError(
              "The input shape for the model needs "
              "to be fully specified (except the batch axis). "
              f"Model input shape is: {model.input_shape}"
          )
  
      inputs = model.inputs[: self._subanalyzer._n_data_input]
      extra_inputs = model.inputs[self._subanalyzer._n_data_input :]
  
      # outputs = model.outputs[: self._subanalyzer._n_data_output]
      extra_outputs = model.outputs[self._subanalyzer._n_data_output :]
  
      if len(extra_outputs) > 0:
          raise Exception(
              "No extra output is allowed with this wrapper."
          )
  
      new_inputs = self._augment(ibackend.to_list(inputs))
  
      augmented_outputs = ibackend.to_list(
          model(new_inputs + extra_inputs)
      )
      new_outputs = self._reduce(augmented_outputs)
      new_constant_inputs = self._keras_get_constant_inputs()
  
      inputs = inputs + extra_inputs + new_constant_inputs
      outputs = new_outputs + extra_outputs
      new_model = kmodels.Model(inputs=inputs, outputs=outputs)
      self._subanalyzer._analyzer_model = new_model
  
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 AugmentReduceBase obj's underlying member method code with example usage: obj.create_analyzer_model() without return types