code: def downsample(
      image: type_alias.TensorLike,
      num_levels: int,
      name: str = "pyramid_downsample",
  ) -> List[tf.Tensor]:
      """Generates the different levels of the pyramid (downsampling).
  
      Args:
        image: A tensor of shape `[B, H, W, C]`, where `B` is the batch size, `H`
          the height of the image, `W` the width of the image, and `C` the number of
          channels of the image.
        num_levels: The number of levels to generate.
        name: A name for this op that defaults to "pyramid_downsample".
  
      Returns:
        A list containing `num_levels` tensors of shape `[B, H_i, W_i, C]`, where
        `H_i` and `W_i` are the height and width of the downsampled image for the
        level i.
  
      Raises:
        ValueError: If the shape of `image` is not supported.
      """
      with tf.name_scope(name):
          image = tf.convert_to_tensor(value=image)
  
          shape.check_static(
              tensor=image, tensor_name="image", has_rank=4
          )
  
          return _build_pyramid(image, _downsample, num_levels)
  
file_path: graphics/tensorflow_graphics/image/pyramid.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from typing import Callable, List, Optional, Tuple
  import numpy
  from six.moves import range
  import tensorflow
  from tensorflow_graphics.util import export_api
  from tensorflow_graphics.util import shape
  from tensorflow_graphics.util import type_alias
label_desc: Use image node_id 6 for calling a global function with example usage: downsample(image, num_levels, name) and returns: _build_pyramid