code: def reduce_logmeanexp(
      input_tensor,
      axis=None,
      keepdims=False,
      experimental_named_axis=None,
      experimental_allow_all_gather=False,
      name=None,
  ):
      """Computes `log(mean(exp(input_tensor)))`.
  
      Reduces `input_tensor` along the dimensions given in `axis`.  Unless
      `keepdims` is true, the rank of the tensor is reduced by 1 for each entry in
      `axis`. If `keepdims` is true, the reduced dimensions are retained with length
      1.
  
      If `axis` has no entries, all dimensions are reduced, and a tensor with a
      single element is returned.
  
      This function is more numerically stable than `log(reduce_mean(exp(input)))`.
      It avoids overflows caused by taking the exp of large inputs and underflows
      caused by taking the log of small inputs.
  
      Args:
        input_tensor: The tensor to reduce. Should have numeric type.
        axis: The dimensions to reduce. If `None` (the default), reduces all
          dimensions. Must be in the range `[-rank(input_tensor),
          rank(input_tensor))`.
        keepdims:  Boolean.  Whether to keep the axis as singleton dimensions.
          Default value: `False` (i.e., squeeze the reduced dimensions).
        experimental_named_axis: A `str or list of `str` axis names to additionally
          reduce over. Providing `None` will not reduce over any axes.
        experimental_allow_all_gather: Allow using an `all_gather`-based fallback
          under TensorFlow when computing the distributed maximum. This fallback is
          only efficient when `axis` reduces away most of the dimensions of
          `input_tensor`.
        name: Python `str` name prefixed to Ops created by this function.
          Default value: `None` (i.e., `'reduce_logmeanexp'`).
  
      Returns:
        log_mean_exp: The reduced tensor.
      """
      with tf.name_scope(name or "reduce_logmeanexp"):
          input_tensor = tf.convert_to_tensor(input_tensor)
          named_axes = distribute_lib.canonicalize_named_axis(
              experimental_named_axis
          )
          lse = distribute_lib.reduce_logsumexp(
              input_tensor,
              axis=axis,
              keepdims=keepdims,
              named_axis=named_axes,
              allow_all_gather=experimental_allow_all_gather,
          )
          n = ps.size(input_tensor) // ps.size(lse)
          for named_axis in named_axes:
              n = n * distribute_lib.get_axis_size(named_axis)
          log_n = tf.math.log(tf.cast(n, lse.dtype))
          return lse - log_n
  
imports: import collections
  import functools
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import custom_gradient
  from tensorflow_probability.python.internal import distribute_lib
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import variadic_reduce
  from tensorflow_probability.python.math.scan_associative import scan_associative
  from tensorflow.python.util import deprecation
label_desc: Use image node_id 7 for calling a global function with example usage: reduce_logmeanexp(input_tensor, axis, keepdims, experimental_named_axis, experimental_allow_all_gather, name) and returns: unknown