class_docstr: A simple object to capture a task head (tower).
code: def __init__(
      self,
      phoenix_spec,
      tower_name,
      architecture,
      is_training,
      logits_dimension,
      is_frozen,
      hparams,
      model_directory,
      generator_name=None,
  ):
      super(Task, self).__init__(
          phoenix_spec=phoenix_spec,
          tower_name=tower_name,
          architecture=architecture,
          is_training=is_training,
          logits_dimension=logits_dimension,
          is_frozen=is_frozen,
          hparams=hparams,
          model_directory=model_directory,
          dropout_rate=None,
          allow_auxiliary_head=False,
      )
      self._generator_name = generator_name
  
imports: import collections
  import functools
  import inspect
  from absl import logging
  from model_search import block_builder
  from model_search import ensembler
  from model_search.architecture import architecture_utils
  from model_search.architecture import tower
  from model_search.ensembler import EnsembleLogits
  from model_search.generators import base_tower_generator
  from model_search.generators import trial_utils
  from model_search.meta import distillation
  import numpy
  import tensorflow.compat.v2
label_desc: Use image node_id 1 to create a new Task object from inherited base classes: tower with example: obj = Task(phoenix_spec, tower_name, architecture, is_training, logits_dimension, is_frozen, hparams, model_directory, generator_name)