class_docstr: A `Functional` model is a `Model` defined as a directed graph of layers.
  
  Three types of `Model` exist: subclassed `Model`, `Functional` model,
  and `Sequential` (a special case of `Functional`).
  
  A `Functional` model can be instantiated by passing two arguments to
  `__init__()`. The first argument is the `keras.Input` objects
  that represent the inputs to the model.
  The second argument specifies the output tensors that represent
  the outputs of this model. Both arguments can be a nested structure
  of tensors.
  
  Example:
  
  ```
  inputs = {'x1': keras.Input(shape=(10,), name='x1'),
            'x2': keras.Input(shape=(1,), name='x2')}
  t = keras.layers.Dense(1, activation='relu')(inputs['x1'])
  outputs = keras.layers.Add()([t, inputs['x2']])
  model = keras.Model(inputs, outputs)
  ```
  
  A `Functional` model constructed using the Functional API can also
  include raw Keras 3 ops.
  
  Example:
  
  ```python
  inputs = keras.Input(shape=(10,))
  x = keras.layers.Dense(1)(inputs)
  outputs = ops.nn.relu(x)
  model = keras.Model(inputs, outputs)
  ```
  
  A new `Functional` model can also be created by using the
  intermediate tensors. This enables you to quickly extract sub-components
  of the model.
  
  Example:
  
  ```python
  inputs = keras.Input(shape=(None, None, 3))
  processed = keras.layers.RandomCrop(width=32, height=32)(inputs)
  conv = keras.layers.Conv2D(filters=2, kernel_size=3)(processed)
  pooling = keras.layers.GlobalAveragePooling2D()(conv)
  feature = keras.layers.Dense(10)(pooling)
  
  full_model = keras.Model(inputs, feature)
  backbone = keras.Model(processed, conv)
  activations = keras.Model(conv, feature)
  ```
  
  Note that the `backbone` and `activations` models are not
  created with `keras.Input` objects, but with the tensors
  that are originated from `keras.Input` objects.
  Under the hood, the layers and weights will
  be shared across these models, so that user can train the `full_model`, and
  use `backbone` or `activations` to do feature extraction.
  The inputs and outputs of the model can be nested structures of tensors as
  well, and the created models are standard `Functional` model that support
  all the existing API.
  
  Args:
      inputs: List of input tensors (must be created via `keras.Input()`
          or originated from `keras.Input()`).
      outputs: List of output tensors.
      name: String, optional. Name of the model.
      trainable: Boolean, optional. If the model's variables should be
          trainable.
class_docstr_tok: ["A","`","Functional","`","model","is","a","`","Model","`","defined","as","a","directed","graph","of","layers",".","Three","types","of","`","Model","`","exist",":","subclassed","`","Model","`",",","`","Functional","`","model",",","and","`","Sequential","`","(","a","special","case","of","`","Functional","`",")",".","A","`","Functional","`","model","can","be","instantiated","by","passing","two","arguments","to","`","__init__","(",")","`",".","The","first","argument","is","the","`","keras.Input","`","objects","that","represent","the","inputs","to","the","model",".","The","second","argument","specifies","the","output","tensors","that","represent","the","outputs","of","this","model",".","Both","arguments","can","be","a","nested","structure","of","tensors",".","Example",":","``","`","inputs","=","{","'x1","'",":","keras.Input","(","shape=","(","10",",",")",",","name='x1","'",")",",","'x2","'",":","keras.Input","(","shape=","(","1",",",")",",","name='x2","'",")","}","t","=","keras.layers.Dense","(","1",",","activation='relu","'",")","(","inputs","[","'x1","'","]",")","outputs","=","keras.layers.Add","(",")","(","[","t",",","inputs","[","'x2","'","]","]",")","model","=","keras.Model","(","inputs",",","outputs",")","``","`","A","`","Functional","`","model","constructed","using","the","Functional","API","can","also","include","raw","Keras","3","ops",".","Example",":","``","`","python","inputs","=","keras.Input","(","shape=","(","10",",",")",")","x","=","keras.layers.Dense","(","1",")","(","inputs",")","outputs","=","ops.nn.relu","(","x",")","model","=","keras.Model","(","inputs",",","outputs",")","``","`","A","new","`","Functional","`","model","can","also","be","created","by","using","the","intermediate","tensors",".","This","enables","you","to","quickly","extract","sub-components","of","the","model",".","Example",":","``","`","python","inputs","=","keras.Input","(","shape=","(","None",",","None",",","3",")",")","processed","=","keras.layers.RandomCrop","(","width=32",",","height=32",")","(","inputs",")","conv","=","keras.layers.Conv2D","(","filters=2",",","kernel_size=3",")","(","processed",")","pooling","=","keras.layers.GlobalAveragePooling2D","(",")","(","conv",")","feature","=","keras.layers.Dense","(","10",")","(","pooling",")","full_model","=","keras.Model","(","inputs",",","feature",")","backbone","=","keras.Model","(","processed",",","conv",")","activations","=","keras.Model","(","conv",",","feature",")","``","`","Note","that","the","`","backbone","`","and","`","activations","`","models","are","not","created","with","`","keras.Input","`","objects",",","but","with","the","tensors","that","are","originated","from","`","keras.Input","`","objects",".","Under","the","hood",",","the","layers","and","weights","will","be","shared","across","these","models",",","so","that","user","can","train","the","`","full_model","`",",","and","use","`","backbone","`","or","`","activations","`","to","do","feature","extraction",".","The","inputs","and","outputs","of","the","model","can","be","nested","structures","of","tensors","as","well",",","and","the","created","models","are","standard","`","Functional","`","model","that","support","all","the","existing","API",".","Args",":","inputs",":","List","of","input","tensors","(","must","be","created","via","`","keras.Input","(",")","`","or","originated","from","`","keras.Input","(",")","`",")",".","outputs",":","List","of","output","tensors",".","name",":","String",",","optional",".","Name","of","the","model",".","trainable",":","Boolean",",","optional",".","If","the","model","'s","variables","should","be","trainable","."]
code: def input(self):
      # For backwards compatibility,
      # override `input` to retrieve the used-provided
      # constructor inputs
      return self._inputs_struct
  
imports: import copy
  import inspect
  import warnings
  import tree
  from keras import backend
  from keras import ops
  from keras.backend.common import global_state
  from keras.layers.input_spec import InputSpec
  from keras.layers.layer import Layer
  from keras.legacy.saving import saving_utils
  from keras.legacy.saving import serialization
  from keras.models.model import Model
  from keras.ops.function import Function
  from keras.ops.function import make_node_key
  from keras.saving import serialization_lib
  from keras.utils import tracking
label_desc: Use image node_id 14 for calling the Functional obj's underlying member method code with example usage: obj.input() and returns: self