code: def layer_shapes(image_shape, model):
      """Compute layer shapes given input image shape and the model.
  
      Args
          image_shape: The shape of the image.
          model: The model to use for computing how the image shape is transformed in the pyramid.
  
      Returns
          A dictionary mapping layer names to image shapes.
      """
      shape = {
          model.layers[0].name: (None,) + image_shape,
      }
  
      for layer in model.layers[1:]:
          nodes = layer._inbound_nodes
          for node in nodes:
              if isinstance(node.inbound_layers, keras.layers.Layer):
                  inputs = [shape[node.inbound_layers.name]]
              else:
                  inputs = [
                      shape[lr.name] for lr in node.inbound_layers
                  ]
              if not inputs:
                  continue
              shape[layer.name] = layer.compute_output_shape(
                  inputs[0] if len(inputs) == 1 else inputs
              )
  
      return shape
  
file_path: ImageAI/imageai_tf_deprecated/Detection/keras_retinanet/utils/anchors.py
imports: import numpy
  from tensorflow import keras
label_desc: Use image node_id 2 for calling a global function with example usage: layer_shapes(image_shape, model) and returns: shape