class_docstr: A subgraph of a TensorFlow computational graph.
  
  TensorFlow graphs are often too low-level to represent our conceptual
  understanding of a model
  
  OverlayGraph can be used to represent a simplified version of a TensorFlow
  graph. Each node corresponds to a node in the original TensorFlow graph, and
  edges correspond to paths through the original graph.
code: def __init__(
      self,
      tf_graph,
      nodes=None,
      no_pass_through=None,
      prev_overlay=None,
  ):
      self.tf_graph = tf_graph
  
      if nodes is None:
          nodes = []
          for op in tf_graph.get_operations():
              nodes.extend([out.name for out in op.outputs])
  
      self.name_map = {name: OverlayNode(name, self) for name in nodes}
      self.nodes = [self.name_map[name] for name in nodes]
      self.no_pass_through = (
          [] if no_pass_through is None else no_pass_through
      )
      self.node_to_consumers = defaultdict(set)
      self.node_to_inputs = defaultdict(set)
      self.prev_overlay = prev_overlay
  
      for node in self.nodes:
          for inp in self._get_overlay_inputs(node):
              self.node_to_inputs[node].add(inp)
              self.node_to_consumers[inp].add(node)
  
      self.node_to_extended_consumers = defaultdict(set)
      self.node_to_extended_inputs = defaultdict(set)
  
      for node in self.nodes:
          for inp in self.node_to_inputs[node]:
              self.node_to_extended_inputs[node].add(inp)
              self.node_to_extended_inputs[node].update(
                  self.node_to_extended_inputs[inp]
              )
  
      for node in self.nodes[::-1]:
          for out in self.node_to_consumers[node]:
              self.node_to_extended_consumers[node].add(out)
              self.node_to_extended_consumers[node].update(
                  self.node_to_extended_consumers[out]
              )
  
imports: from collections import defaultdict
  import numpy
  import tensorflow
label_desc: Use image node_id 1 to create a new OverlayGraph object  with example: obj = OverlayGraph(tf_graph, nodes, no_pass_through, prev_overlay)