docs: def _verify_inputs(inputs, channel_index, data_format):
    """Verifies `inputs` is semantically correct.
  
    Args:
      inputs: An input tensor provided by the user.
      channel_index: The index of the channel dimension.
      data_format: The format of the data in `inputs`.
  
    Raises:
      base.IncompatibleShapeError: If the shape of `inputs` doesn't match
        `data_format`.
      base.UnderspecifiedError: If the channel dimension of `inputs` isn't
        defined.
      TypeError: If input Tensor dtype is not compatible with either
        `tf.float16`, `tf.bfloat16` or `tf.float32`.
    """
    # Check shape.
    input_shape = tuple(inputs.get_shape().as_list())
    if len(input_shape) != len(data_format):
      raise base.IncompatibleShapeError((
          "Input Tensor must have rank {} corresponding to "
          "data_format {}, but instead was {} of rank {}.").format(
              len(data_format), data_format, input_shape, len(input_shape)))
  
    # Check type.
    if not (tf.float16.is_compatible_with(inputs.dtype) or
            tf.bfloat16.is_compatible_with(inputs.dtype) or
            tf.float32.is_compatible_with(inputs.dtype)):
      raise TypeError(
          "Input must have dtype tf.float16, tf.bfloat16 or tf.float32, "
          "but dtype was {}".format(inputs.dtype))
  
    # Check channel dim.
    input_channels = input_shape[channel_index]
    if input_channels is None:
      raise base.UnderspecifiedError(
          "Number of input channels must be known at module build time")