docstr: Initialize based on a uniform distribution, will fill in all values
  with values drawn from a uniform (all values have an equal probability)
  distribution.
  
  with range `[-wlim, wlim]` (endpoints included) with `wlim` being calculated as
  `gain * (numerator / fan)**power`. This distribution helps with issues when
  trying to optimize and train networks. The expected value of this distribution
  is `0` and the variance is
  `(gain * numerator / fan)^power / 4`.
  
  This is intended as a base-class for special predefined initializers.
  
  Parameters
  ----------
  numerator
  fan_mode
      Determines how `fan` is calculated.
      - `fan_out` sets `fan` to the number of output features of this neuron.
        This is useful when training using back-propogation.
      - `fan_in` sets `fan` to the number of input features of this neuron.
        This is useful when training using forward-propogation.
      - `fan_sum` sets `fan` to the sum of the number of input features and
        output features of this neuron.
      - `fan_avg` sets `fan` to the average of the number of input features and
        output features of this neuron.
  power
      Sets the drop-off factor for the calculated `fan`.
  gain
      Scales the output of the distribution.
docstr_tok: ["Initialize","based","on","a","uniform","distribution",",","will","fill","in","all","values","with","values","drawn","from","a","uniform","(","all","values","have","an","equal","probability",")","distribution",".","with","range","`","[","-wlim",",","wlim","]","`","(","endpoints","included",")","with","`","wlim","`","being","calculated","as","`","gain","*","(","numerator","\/","fan",")","*","*","power","`",".","This","distribution","helps","with","issues","when","trying","to","optimize","and","train","networks",".","The","expected","value","of","this","distribution","is","`","0","`","and","the","variance","is","`","(","gain","*","numerator","\/","fan",")","^power","\/","4","`",".","This","is","intended","as","a","base-class","for","special","predefined","initializers",".","Parameters","--","--","--","--","--","numerator","fan_mode","Determines","how","`","fan","`","is","calculated",".","-","`","fan_out","`","sets","`","fan","`","to","the","number","of","output","features","of","this","neuron",".","This","is","useful","when","training","using","back-propogation",".","-","`","fan_in","`","sets","`","fan","`","to","the","number","of","input","features","of","this","neuron",".","This","is","useful","when","training","using","forward-propogation",".","-","`","fan_sum","`","sets","`","fan","`","to","the","sum","of","the","number","of","input","features","and","output","features","of","this","neuron",".","-","`","fan_avg","`","sets","`","fan","`","to","the","average","of","the","number","of","input","features","and","output","features","of","this","neuron",".","power","Sets","the","drop-off","factor","for","the","calculated","`","fan","`",".","gain","Scales","the","output","of","the","distribution","."]
code: def __init__(self, numerator, fan_mode, power, gain):
      """Initialize based on a uniform distribution, will fill in all values
      with values drawn from a uniform (all values have an equal probability)
      distribution.
  
      with range `[-wlim, wlim]` (endpoints included) with `wlim` being calculated as
      `gain * (numerator / fan)**power`. This distribution helps with issues when
      trying to optimize and train networks. The expected value of this distribution
      is `0` and the variance is
      `(gain * numerator / fan)^power / 4`.
  
      This is intended as a base-class for special predefined initializers.
  
      Parameters
      ----------
      numerator
      fan_mode
          Determines how `fan` is calculated.
          - `fan_out` sets `fan` to the number of output features of this neuron.
            This is useful when training using back-propogation.
          - `fan_in` sets `fan` to the number of input features of this neuron.
            This is useful when training using forward-propogation.
          - `fan_sum` sets `fan` to the sum of the number of input features and
            output features of this neuron.
          - `fan_avg` sets `fan` to the average of the number of input features and
            output features of this neuron.
      power
          Sets the drop-off factor for the calculated `fan`.
      gain
          Scales the output of the distribution.
      """
      ivy.utils.assertions.check_elem_in_list(
          fan_mode, ["fan_in", "fan_out", "fan_sum", "fan_avg"]
      )
      self._numerator = numerator
      self._fan_mode = fan_mode
      self._power = power
      self._gain = gain
  
imports: from typing import Tuple, Union, Optional
  import abc
  import ivy
  from ivy.functional.ivy.gradients import _variable
label_desc: Use image node_id 1 to create a new Uniform object from inherited base classes: Initializer with example: obj = Uniform(numerator, fan_mode, power, gain)