class_docstr: A `Node` describes an operation `__call__()` event.
  
  A Keras Function is a DAG with `Node` instances as nodes, and
  `KerasTensor` instances as edges. Nodes aren't `Operation` instances,
  because a single operation could be called multiple times, which would
  result in graph cycles.
  
  A `__call__()` event involves input tensors (and other input arguments),
  the operation that was called, and the resulting output tensors.
  A `Node` will include all this information.
  
  Since a single `Operation` could be called multiple times,
  the `Node` instances are stored on operations as a list.
  Each time an operation is called, a node is added to `op._inbound_nodes`.
  Each time the output of an operation is used by another operation,
  a node is added to `op._outbound_nodes`.
  
  Every `KerasTensor` instance has a `KerasHistory` object attached,
  which tracks the `Node` that records the `__call__()` event that created
  the tensor. By recursively walking through `Node` instances
  via the `KerasHistory` metadata of `KerasTensor` instances, once can
  retrieve the entire DAG of a Keras Function.
  
  Args:
      operation: The Operation that was called in the `op.__call__()`
          event that this node represents.
      call_args: The positional arguments the operation was called with.
      call_kwargs: The keyword arguments the operation was called with.
      outputs: The output tensors of the `op.__call__()` call.
class_docstr_tok: ["A","`","Node","`","describes","an","operation","`","__call__","(",")","`","event",".","A","Keras","Function","is","a","DAG","with","`","Node","`","instances","as","nodes",",","and","`","KerasTensor","`","instances","as","edges",".","Nodes","are","n't","`","Operation","`","instances",",","because","a","single","operation","could","be","called","multiple","times",",","which","would","result","in","graph","cycles",".","A","`","__call__","(",")","`","event","involves","input","tensors","(","and","other","input","arguments",")",",","the","operation","that","was","called",",","and","the","resulting","output","tensors",".","A","`","Node","`","will","include","all","this","information",".","Since","a","single","`","Operation","`","could","be","called","multiple","times",",","the","`","Node","`","instances","are","stored","on","operations","as","a","list",".","Each","time","an","operation","is","called",",","a","node","is","added","to","`","op._inbound_nodes","`",".","Each","time","the","output","of","an","operation","is","used","by","another","operation",",","a","node","is","added","to","`","op._outbound_nodes","`",".","Every","`","KerasTensor","`","instance","has","a","`","KerasHistory","`","object","attached",",","which","tracks","the","`","Node","`","that","records","the","`","__call__","(",")","`","event","that","created","the","tensor",".","By","recursively","walking","through","`","Node","`","instances","via","the","`","KerasHistory","`","metadata","of","`","KerasTensor","`","instances",",","once","can","retrieve","the","entire","DAG","of","a","Keras","Function",".","Args",":","operation",":","The","Operation","that","was","called","in","the","`","op.__call__","(",")","`","event","that","this","node","represents",".","call_args",":","The","positional","arguments","the","operation","was","called","with",".","call_kwargs",":","The","keyword","arguments","the","operation","was","called","with",".","outputs",":","The","output","tensors","of","the","`","op.__call__","(",")","`","call","."]
code: def output_tensors(self):
      return self.outputs
  
file_path: keras/keras/ops/node.py
imports: import collections
  import tree
  from keras.backend import KerasTensor
  from keras.ops.symbolic_arguments import SymbolicArguments
label_desc: Use image node_id 4 for calling the Node obj's underlying member method code with example usage: obj.output_tensors() and returns: self