class_docstr: A tower (Stacked ML model). Consists: logits, architecture, and layers.
code: def call(self, inputs, training):
      if inputs is not None:
          input_tensor = inputs
          self._lengths = None
      else:
          input_tensor = self._input_tensor
      tower_spec = architecture_utils.construct_tower(
          phoenix_spec=self._phoenix_spec,
          input_tensor=input_tensor,
          tower_name=self._tower_name,
          architecture=self._construct_architecture,
          is_training=training,
          lengths=self._lengths,
          logits_dimension=self._logits_dimension,
          is_frozen=self._is_frozen,
          hparams=self._hparams,
          model_directory=self._model_directory,
          dropout_rate=self._dropout_rate,
          allow_auxiliary_head=self._allow_auxiliary_head,
      )
      # Populate TowerSpec to Tower itself.
      self._logits_spec = tower_spec.logits_spec
      self._architecture = tower_spec.architecture
      self._layer_tensors = tower_spec.layer_tensors
      if hasattr(self, "_prev_model_dir") and hasattr(
          self, "_prev_tower_name"
      ):
          architecture_utils.init_variables(
              tf.train.latest_checkpoint(self._prev_model_dir),
              "Phoenix/{}".format(self._prev_tower_name),
              "Phoenix/{}".format(self._tower_name),
          )
      return self._logits_spec.logits
  
file_path: model_search/model_search/architecture/tower.py
imports: from model_search.architecture import architecture_utils
  import tensorflow.compat.v2
label_desc: Use image node_id 10 for calling the Tower obj's underlying member method code with example usage: obj.call(inputs, training) and returns: self