code: def image_summary(
      tag, tensor, max_images=3, collections=None, name=None
  ):
      # pylint: disable=line-too-long
      """Outputs a `Summary` protocol buffer with images.
  
      For an explanation of why this op was deprecated, and information on how to
      migrate, look
      ['here'](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/deprecated/__init__.py)
  
      The summary has up to `max_images` summary values containing images. The
      images are built from `tensor` which must be 4-D with shape `[batch_size,
      height, width, channels]` and where `channels` can be:
  
      *  1: `tensor` is interpreted as Grayscale.
      *  3: `tensor` is interpreted as RGB.
      *  4: `tensor` is interpreted as RGBA.
  
      The images have the same number of channels as the input tensor. For float
      input, the values are normalized one image at a time to fit in the range
      `[0, 255]`.  `uint8` values are unchanged.  The op uses two different
      normalization algorithms:
  
      *  If the input values are all positive, they are rescaled so the largest one
         is 255.
  
      *  If any input value is negative, the values are shifted so input value 0.0
         is at 127.  They are then rescaled so that either the smallest value is 0,
         or the largest one is 255.
  
      The `tag` argument is a scalar `Tensor` of type `string`.  It is used to
      build the `tag` of the summary values:
  
      *  If `max_images` is 1, the summary value tag is '*tag*/image'.
      *  If `max_images` is greater than 1, the summary value tags are
         generated sequentially as '*tag*/image/0', '*tag*/image/1', etc.
  
      Args:
        tag: A scalar `Tensor` of type `string`. Used to build the `tag` of the
          summary values.
        tensor: A 4-D `uint8` or `float32` `Tensor` of shape `[batch_size, height,
          width, channels]` where `channels` is 1, 3, or 4.
        max_images: Max number of batch elements to generate images for.
        collections: Optional list of ops.GraphKeys.  The collections to add the
          summary to.  Defaults to [ops.GraphKeys.SUMMARIES]
        name: A name for the operation (optional).
  
      Returns:
        A scalar `Tensor` of type `string`. The serialized `Summary` protocol
        buffer.
      """
      with ops.name_scope(name, "ImageSummary", [tag, tensor]) as scope:
          val = gen_logging_ops.image_summary(
              tag=tag, tensor=tensor, max_images=max_images, name=scope
          )
          _Collect(val, collections, [ops.GraphKeys.SUMMARIES])
      return val
  
imports: import collections
  import os
  import pprint
  import random
  import sys
  from absl import logging
  from tensorflow.python import pywrap_tfe
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import tensor_util
  from tensorflow.python.ops import gen_logging_ops
  from tensorflow.python.ops import string_ops
  from tensorflow.python.ops.gen_logging_ops import *
  from tensorflow.python.platform import tf_logging
  from tensorflow.python.util import dispatch
  from tensorflow.python.util import nest
  from tensorflow.python.util.deprecation import deprecated
  from tensorflow.python.util.tf_export import tf_export
label_desc: Use image node_id 9 for calling a global function with example usage: image_summary(tag, tensor, max_images, collections, name) and returns: val