code: def image(name, data, step=None, max_outputs=3, description=None):
      """Write an image summary.
  
      See also `tf.summary.scalar`, `tf.summary.SummaryWriter`.
  
      Writes a collection of images to the current default summary writer. Data
      appears in TensorBoard's 'Images' dashboard. Like `tf.summary.scalar` points,
      each collection of images is associated with a `step` and a `name`.  All the
      image collections with the same `name` constitute a time series of image
      collections.
  
      This example writes 2 random grayscale images:
  
      ```python
      w = tf.summary.create_file_writer('test/logs')
      with w.as_default():
        image1 = tf.random.uniform(shape=[8, 8, 1])
        image2 = tf.random.uniform(shape=[8, 8, 1])
        tf.summary.image("grayscale_noise", [image1, image2], step=0)
      ```
  
      To avoid clipping, data should be converted to one of the following:
  
      - floating point values in the range [0,1], or
      - uint8 values in the range [0,255]
  
      ```python
      # Convert the original dtype=int32 `Tensor` into `dtype=float64`.
      rgb_image_float = tf.constant([
        [[1000, 0, 0], [0, 500, 1000]],
      ]) / 1000
      tf.summary.image("picture", [rgb_image_float], step=0)
  
      # Convert original dtype=uint8 `Tensor` into proper range.
      rgb_image_uint8 = tf.constant([
        [[1, 1, 0], [0, 0, 1]],
      ], dtype=tf.uint8) * 255
      tf.summary.image("picture", [rgb_image_uint8], step=1)
      ```
  
      Arguments:
        name: A name for this summary. The summary tag used for TensorBoard will be
          this name prefixed by any active name scopes.
        data: A `Tensor` representing pixel data with shape `[k, h, w, c]`, where
          `k` is the number of images, `h` and `w` are the height and width of the
          images, and `c` is the number of channels, which should be 1, 2, 3, or 4
          (grayscale, grayscale with alpha, RGB, RGBA). Any of the dimensions may be
          statically unknown (i.e., `None`). Floating point data will be clipped to
          the range [0,1]. Other data types will be clipped into an allowed range
          for safe casting to uint8, using `tf.image.convert_image_dtype`.
        step: Explicit `int64`-castable monotonic step value for this summary. If
          omitted, this defaults to `tf.summary.experimental.get_step()`, which must
          not be None.
        max_outputs: Optional `int` or rank-0 integer `Tensor`. At most this many
          images will be emitted at each step. When more than `max_outputs` many
          images are provided, the first `max_outputs` many images will be used and
          the rest silently discarded.
        description: Optional long-form description for this summary, as a constant
          `str`. Markdown is supported. Defaults to empty.
  
      Returns:
        True on success, or false if no summary was emitted because no default
        summary writer was available.
  
      Raises:
        ValueError: if a default writer exists, but no step was provided and
          `tf.summary.experimental.get_step()` is None.
      """
      try:
          from tensorboard.summary.v2 import (
              image as image_v2,
          )  # pylint: disable=g-import-not-at-top, g-importing-member
      except ImportError as exc:
          raise TBNotInstalledError("tf.summary.image") from exc
      return image_v2(
          name=name,
          data=data,
          step=step,
          max_outputs=max_outputs,
          description=description,
      )
  
file_path: tensorflow-upstream/tensorflow/python/summary/tb_summary.py
imports: from tensorflow.python.util.tf_export import tf_export
label_desc: Use image node_id 3 for calling a global function with example usage: image(name, data, step, max_outputs, description) and returns: image_v2