set_global_initializer

paddle.nn.initializer.set_global_initializer ( weight_init, bias_init=None ) [源代码]

该API用于设置Paddle框架中全局的参数初始化方法。该API只对位于其后的代码生效。

模型参数为模型中的weight和bias统称,在fluid中对应fluid.Parameter类,继承自fluid.Variable,是一种可持久化的variable。 该API的设置仅对模型参数生效,对通过 create_global_varcreate_tensor 等API创建的变量不会生效。

如果创建网络层时还通过 param_attrbias_attr 设置了初始化方式,这里的全局设置将不会生效,因为其优先级更低。

参数:

  • weight_init (Initializer) - 设置框架的全局的weight参数初始化方法。

  • bias_init (Initializer,可选) - 设置框架的全局的bias参数初始化方法。默认:None。

返回:无

代码示例

  1. import paddle
  2. import paddle.nn as nn
  3. nn.initializer.set_global_initializer(nn.initializer.Uniform(), nn.initializer.Constant())
  4. x_var = paddle.uniform((2, 4, 8, 8), dtype='float32', min=-1., max=1.)
  5. # conv1的weight参数是通过Uniform来初始化
  6. # conv1的bias参数是通过Constant来初始化
  7. conv1 = nn.Conv2D(4, 6, (3, 3))
  8. y_var1 = conv1(x_var)
  9. # 如果同时设置了param_attr/bias_attr, 全局初始化将不会生效
  10. # conv2的weight参数是通过Xavier来初始化
  11. # conv2的bias参数是通过Normal来初始化
  12. conv2 = nn.Conv2D(4, 6, (3, 3),
  13. weight_attr=nn.initializer.XavierUniform(),
  14. bias_attr=nn.initializer.Normal())
  15. y_var2 = conv2(x_var)
  16. # 取消全局参数初始化的设置
  17. nn.initializer.set_global_initializer(None)