class_docstr: Defines how the inputs, hidden layers, and outputs are connected.
  
  This represents the architecture of a NN by a sequence with this pattern:
  
  (Layer 0)_______
  |InputSelector  |
  |Combiner       | (Node 0)
  |Block__________|
  (Layer 1)_______
  |InputSelector  |
  |Combiner       | (Node 1)
  |Block__________|
  (Layer 2)_______
  |InputSelector  |
  |Combiner       | (Node 2)
  |Block__________|
  (Layer 3)
  .
  .
  .
  (Layer d)
  
  Since every InputSelector has access to all preceding layers, we can represent
  any arbitrary DAG. To obtain the adjacency matrix, we can traverse the
  sequence and concatentate the InputSelectors' outputs.
class_docstr_tok: ["Defines","how","the","inputs",",","hidden","layers",",","and","outputs","are","connected",".","This","represents","the","architecture","of","a","NN","by","a","sequence","with","this","pattern",":","(","Layer","0",")","_______","|InputSelector","|","|Combiner","|","(","Node","0",")","|Block__________|","(","Layer","1",")","_______","|InputSelector","|","|Combiner","|","(","Node","1",")","|Block__________|","(","Layer","2",")","_______","|InputSelector","|","|Combiner","|","(","Node","2",")","|Block__________|","(","Layer","3",")",".",".",".","(","Layer","d",")","Since","every","InputSelector","has","access","to","all","preceding","layers",",","we","can","represent","any","arbitrary","DAG",".","To","obtain","the","adjacency","matrix",",","we","can","traverse","the","sequence","and","concatentate","the","InputSelectors","'","outputs","."]
docstr: Constructs an Architecture.
  
  Args:
    node_list: List of Nodes. The first Node is closest to the inputs, the
      last Node is closest to the outputs.
    input_keys: List of string keys, which fixes the order of the input
      Tensors from the input dict passed into construct_tower call. If None,
      assumes that the construct_tower will be called with a single input
      Tensor instead of a dict, and the NN takes only one input Tensor.
    tower_name: str name of the instance. Defaults to "search_generator_0".
  
  Returns:
    Architecture.
code: def __new__(
      cls, node_list, input_keys=None, tower_name="search_generator_0"
  ):
      """Constructs an Architecture.
  
      Args:
        node_list: List of Nodes. The first Node is closest to the inputs, the
          last Node is closest to the outputs.
        input_keys: List of string keys, which fixes the order of the input
          Tensors from the input dict passed into construct_tower call. If None,
          assumes that the construct_tower will be called with a single input
          Tensor instead of a dict, and the NN takes only one input Tensor.
        tower_name: str name of the instance. Defaults to "search_generator_0".
  
      Returns:
        Architecture.
      """
  
      return super().__new__(
          cls,
          node_list=node_list,
          input_keys=input_keys,
          tower_name=tower_name,
      )
  
imports: import abc
  import collections
  import enum
  import time
  from absl import logging
  from model_search import block_builder
  from model_search import utils
  from model_search.architecture import architecture_utils
  from model_search.proto import phoenix_spec_pb2
  import tensorflow.compat.v2
label_desc: Use image node_id 1 for calling the Architecture obj's underlying member method code with example usage: obj.__new__(cls, node_list, input_keys, tower_name) and returns: super