XavierInitializer

class paddle.fluid.initializer.XavierInitializer(uniform=True, fan_in=None, fan_out=None, seed=0)[源代码]

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

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

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

\[x = \sqrt{\frac{6.0}{fan\_in+fan\_out}}\]

正态分布的情况下,均值为0,标准差为:

\[x = \sqrt{\frac{2.0}{fan\_in+fan\_out}}\]
参数:
  • uniform (bool) - 是否用均匀分布,默认为True。如果为False,则使用正态分布。
  • fan_in (float) - 当前网络层的输入神经元个数。如果为None,则从变量中推断,默认为None。
  • fan_out (float) - 当前网络层的输出神经元个数。如果为None,则从变量中推断,默认为None。
  • seed (int) - 随机种子

注解

在大多数情况下推荐将fan_in和fan_out设置为None

代码示例

import paddle.fluid as fluid
queries = fluid.layers.data(name='x', shape=[1], dtype='float32')
fc = fluid.layers.fc(
    input=queries, size=10,
    param_attr=fluid.initializer.Xavier(uniform=False))