Paddle 请问如何对整个模型进行梯度裁剪

iqxoj9l9  于 2021-11-30  发布在  Java
关注(0)|答案(4)|浏览(407)

我在复现torch代码时,遇到了梯度采集相关的问题,torch的梯度裁剪是对optimizer进行的,torch源码:

def clip_gradient(optimizer, grad_clip):
"""
Clips gradients computed during backpropagation to avoid explosion of gradients.
:param optimizer: optimizer with the gradients to be clipped
:param grad_clip: clip value
"""
for group in optimizer.param_groups:
for param in group['params']:
if param.grad is not None:
param.grad.data.clamp_(-grad_clip, grad_clip)

我查到了paddle的梯度裁剪,不仅需要对优化器的grad_clip设置采集范围,还需要对模型设置 weight_attr=paddle.ParamAttr(need_clip=True),

请问,对于已经搭建好的模型,应该如何遍历网络参数,并设置算子的weight_attr,使得对整个模型进行梯度裁剪

pvabu6sv

pvabu6sv1#

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档常见问题历史IssueAI社区来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQGithub Issue and AI community to get the answer.Have a nice day!

mwg9r5ms

mwg9r5ms2#

还需要对模型设置 weight_attr=paddle.ParamAttr(need_clip=True)

为什么要这么做,直接设置grad_clip不行吗?
可以用module.parameters()获取所有参数。

332nm8kg

332nm8kg3#

直接设置优化器中的grad_clip参数,可以不用设置模型中的weight_attr参数,就能实现梯度裁剪吗, 我是看到文档中有设置weight_attr这个参数,以为必须设置。https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/ClipGradByValue_cn.html#cn-api-fluid-clip-clipgradbyvalue module.parameters()我也尝试下,多谢!…

------------------ 原始邮件 ------------------ 发件人: "PaddlePaddle/Paddle"***@***.***>; 发送时间: 2021年9月8日(星期三) 下午5:03***@***.***>;***@***.******@***.***>; 主题: Re: [PaddlePaddle/Paddle] 请问如何对整个模型进行梯度裁剪 (#35582) 还需要对模型设置 weight_attr=paddle.ParamAttr(need_clip=True) 为什么要这么做,直接设置grad_clip不行吗? 可以用module.parameters()获取所有参数。 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

brtdzjyr

brtdzjyr4#

weight_attr主要实现参数正则化,不是必须的。

相关问题