paddle 的 gradient clipping 疑似无法被触发,求解答。
Created by: 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 。
求解答,谢谢啦。