Skip to content

paddle 的 gradient clipping 疑似无法被触发,求解答。 #775

@lcy-seso

Description

@lcy-seso

paddle 实现了 对 gradient 做 element-wise 的 hard clipping。我的设置方式是在配置中调用:

default_gradient_clipping_threshold(10)

输出配置解析结果,也确定参数的 gradient clipping 阈值设置成功。

代码中 FirstOrderOptimizer.cpp文件中,OptimizerWithGradientClipping::update 实现了梯度的clipping,但是这个函数现在并没有没有被调用。

训练算法参数如下:

Settings(algorithm="sgd",
             learning_method="adam",
             learning_rate=5e-4,
             learning_rate_decay_a=0,
             learning_rate_decay_b=0,
             ada_rou=0.95,
             ada_epsilon=1e-6,
             batch_size=4,
             num_batches_per_send_parameter=1,
             num_batches_per_get_parameter=1, )

目前只是本地gpu 单卡训练,未开启 do _average_in_cpu.
代码中:trainer 的 init 调用 createParameterUpdater,然后会 new SgdLocalUpdater,再 reset成 AverageOptimizer,因为没有设置 average sgd 的窗口,这个 optimizer 什么都没干。
而只有 OptimizerWithRegularizer 会创建 OptimizerWithGradientClipping,始终无法确定如何能触发 gradient clipping 。

求解答,谢谢啦。

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions