XavierInitializer_cn.rst 1.5 KB
Newer Older
H
Hao Wang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
.. _cn_api_fluid_initializer_XavierInitializer:

XavierInitializer
-------------------------------

.. py: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 <http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf>`_

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

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

.. math::

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

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

.. math::
    
    x = \sqrt{\frac{2.0}{fan\_in+fan\_out}}

参数:
    - **uniform** (bool) - 是否用均匀分布或者正态分布
    - **fan_in** (float) - 用于Xavier初始化的fan_in。如果为None,fan_in沿伸自变量
    - **fan_out** (float) - 用于Xavier初始化的fan_out。如果为None,fan_out沿伸自变量
    - **seed** (int) - 随机种子

.. note::

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

**代码示例**:

.. code-block:: python

    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))