WeightNormParamAttr

class paddle.static.WeightNormParamAttr ( dim\=None, name\=None, initializer\=None, learning_rate\=1.0, regularizer\=None, trainable\=True, do_model_average\=False, need_clip\=True ) [源代码]

api_attr

声明式编程模式(静态图)

注解

动态图模式下请使用 paddle.nn.utils.weight_norm

注解

该类中的 gradient_clip 属性在2.0版本会废弃,推荐在初始化 optimizer 时设置梯度裁剪。共有三种裁剪策略: cn_api_paddle_nn_ClipGradByGlobalNorm 、 cn_api_paddle_nn_ClipGradByNorm 、 cn_api_paddle_nn_ClipGradByValue 。

该类定义了权重归一化(Weight Normalization)的参数。权重归一化可以将神经网络中权重向量的长度与其方向解耦,详细的定义与实现可以参考论文:Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks

参数:

  • dim (int,可选) - 进行归一化操作(norm)的切片所在维度,是小于权重Tensor rank的非负数。比如卷积的权重shape是

    WeightNormParamAttr - 图1

    , rank是4,则dim可以选0,1,2,3;fc的权重shape是

    WeightNormParamAttr - 图2

    ,rank是2,dim可以选0,1。 dim 默认为None,如果为None就对所有元素做归一化(norm)。

  • name (None|str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 Name ,默认为None。

  • initializer (Initializer,可选) - 初始化参数方法,例如 initializer = fluid.nn.initializer.Constant(1.0) 。默认为None,如果为None则使用默认初始化函数 Xavier() 。

  • learning_rate (float32,可选) - 学习率,优化过程 global_lr∗parameter_lr∗scheduler_factorglobal_lr∗parameter_lr∗scheduler_factor 的学习速率,默认为1.0。

  • regularizer (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: L1DecayL2Decay ,如果在 optimizer (例如 SGD ) 中也 设置了正则化,optimizer 中的正则化将被忽略。默认值为None,表示没有正则化。

  • trainable (bool) - 可选,指明参数是否可训练,默认为True。

  • do_model_average (bool) - 可选,指明参数是否需要模型平均化操作(Model Average),默认为False。

  • need_clip (bool) - 可选,指明参数梯度是否需要在优化器中进行clip,默认为True。

代码示例

  1. import paddle
  2. paddle.enable_static()
  3. data = paddle.static.data(name="data", shape=[3, 32, 32], dtype="float32")
  4. fc = paddle.static.nn.fc(x=data,
  5. size=1000,
  6. weight_attr=paddle.static.WeightNormParamAttr(
  7. dim=None,
  8. name='weight_norm_param',
  9. initializer=paddle.nn.initializer.Constant(1.0),
  10. learning_rate=1.0,
  11. regularizer=paddle.regularizer.L2Decay(0.1),
  12. trainable=True,
  13. do_model_average=False,
  14. need_clip=True))