code: def _build_pyramid(
      image: type_alias.TensorLike,
      sampler: Callable[
          [type_alias.TensorLike, type_alias.TensorLike],
          type_alias.TensorLike,
      ],
      num_levels: int,
  ) -> List[tf.Tensor]:
      """Creates the different levels of the pyramid.
  
      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.
        sampler: A function to execute for each level (_upsample or _downsample).
        num_levels: The number of levels.
  
      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 image for the level i.
      """
      kernel = _binomial_kernel(
          tf.shape(input=image)[3], dtype=image.dtype
      )
      levels = [image]
      for _ in range(num_levels):
          image = sampler(image, kernel)
          levels.append(image)
      return 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 3 for calling a global function with example usage: _build_pyramid(image, sampler, num_levels) and returns: levels