code: def xavier_init(n_inputs, n_outputs, uniform=True):
    
    if uniform:
      # 6 was used in the paper.
      init_range = math.sqrt(6.0 / (n_inputs + n_outputs))
      return tf.random_uniform_initializer(-init_range, init_range)
    else:
      # 3 gives us approximately the same limits as above since this repicks
      # values greater than 2 standard deviations from the mean.
      stddev = math.sqrt(3.0 / (n_inputs + n_outputs))
      return tf.truncated_normal_initializer(stddev=stddev)
docs: Set the parameter initialization using the method described.
  
    This method is designed to keep the scale of the gradients roughly the same
    in all layers.
  
    Xavier Glorot and Yoshua Bengio (2010):
             Understanding the difficulty of training deep feedforward neural
             networks. International conference on artificial intelligence and
             statistics.
    Args:
      n_inputs: The number of input nodes into each output.
      n_outputs: The number of output nodes for each input.
      uniform: If true use a uniform distribution, otherwise use a normal.
    Returns:
      An initializer.