class_docstr: The base class for different Block.
  
  The Block can be connected together to build the search space for an
  AutoModel. Notably, many args in the __init__ function are defaults to be a
  tunable variable when not specified by the user.
docstr: Functional API.
  
  # Arguments
      inputs: A list of input node(s) or a single input node for the
          block.
  
  # Returns
      list: A list of output node(s) of the Block.
code: def __call__(self, inputs):
      """Functional API.
  
      # Arguments
          inputs: A list of input node(s) or a single input node for the
              block.
  
      # Returns
          list: A list of output node(s) of the Block.
      """
      self.inputs = nest.flatten(inputs)
      for input_node in self.inputs:
          if not isinstance(input_node, node_module.Node):
              raise TypeError(
                  "Expect the inputs to block {name} to be "
                  "a Node, but got {type}.".format(
                      name=self.name, type=type(input_node)
                  )
              )
          input_node.add_out_block(self)
      self.outputs = []
      for _ in range(self._num_output_node):
          output_node = node_module.Node()
          output_node.add_in_block(self)
          self.outputs.append(output_node)
      return self.outputs
  
file_path: autokeras/autokeras/engine/block.py
imports: from tensorflow import nest
  from autokeras.engine import named_hypermodel
  from autokeras.engine import node
label_desc: Use image node_id 3 for calling the Block obj's underlying member method code with example usage: obj.__call__(inputs) and returns: self