XavierUniform

class paddle.nn.initializer.XavierUniform ( fan_in=None, fan_out=None, name=None ) [源代码]

该类实现Xavier权重初始化方法( Xavier weight initializer),Xavier权重初始化方法出自Xavier Glorot和Yoshua Bengio的论文 Understanding the difficulty of training deep feedforward neural networks

该初始化函数用于保持所有层的梯度尺度几乎一致。

在均匀分布的情况下,取值范围为[-x,x],其中:

XavierUniform - 图1

参数:

  • fan_in (float,可选) - 用于Xavier初始化的fan_in,从tensor中推断。默认为None。

  • fan_out (float,可选) - 用于Xavier初始化的fan_out,从tensor中推断。默认为None。

  • name (str,可选)- 具体用法请参见 Name,一般无需设置,默认值为None。

返回:

由使用均匀分布的Xavier权重初始化的参数。

代码示例

  1. import paddle
  2. data = paddle.ones(shape=[3, 1, 2], dtype='float32')
  3. weight_attr = paddle.framework.ParamAttr(
  4. name="linear_weight",
  5. initializer=paddle.nn.initializer.XavierUniform())
  6. bias_attr = paddle.framework.ParamAttr(
  7. name="linear_bias",
  8. initializer=paddle.nn.initializer.XavierUniform())
  9. linear = paddle.nn.Linear(2, 2, weight_attr=weight_attr, bias_attr=bias_attr)
  10. # linear.weight: [[-0.04229349 -1.1248565 ]
  11. # [-0.10789523 -0.5938053 ]]
  12. # linear.bias: [ 1.1983747 -0.40201235]
  13. res = linear(data)
  14. # res: [[[ 1.0481861 -2.1206741]]
  15. # [[ 1.0481861 -2.1206741]]
  16. # [[ 1.0481861 -2.1206741]]]