code: def xavier_initializer(uniform=True, seed=None, dtype=dtypes.float32):
      """Returns an initializer performing "Xavier" initialization for weights.
  
      This function implements the weight initialization from:
  
      Xavier Glorot and Yoshua Bengio (2010):
               [Understanding the difficulty of training deep feedforward neural
               networks. International conference on artificial intelligence and
               statistics.](
               http://www.jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf)
  
      This initializer is designed to keep the scale of the gradients roughly the
      same in all layers. In uniform distribution this ends up being the range:
      `x = sqrt(6. / (in + out)); [-x, x]` and for normal distribution a standard
      deviation of `sqrt(2. / (in + out))` is used.
  
      Args:
        uniform: Whether to use uniform or normal distributed random initialization.
        seed: A Python integer. Used to create random seeds. See
              `tf.compat.v1.set_random_seed` for behavior.
        dtype: The data type. Only floating point types are supported.
  
      Returns:
        An initializer for a weight matrix.
      """
      return variance_scaling_initializer(
          factor=1.0,
          mode="FAN_AVG",
          uniform=uniform,
          seed=seed,
          dtype=dtype,
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  from tensorflow.python.framework import dtypes
  from tensorflow.python.ops import random_ops
label_desc: Use image node_id 1 for calling a global function with example usage: xavier_initializer(uniform, seed, dtype) and returns: variance_scaling_initializer