...巧妙的使用或者停用 optimizer.zero_grad()来训练大模型?_百度...

发布网友 发布时间:2024-10-04 19:21

我来回答

2个回答

热心网友 时间:2024-10-04 20:40

optimizer.zero_grad()意思是把梯度置零,也就是把loss关于weight的导数变成0.
pytorch对于每个batch大都执行了这样的操作:
optimizer.zero_grad() ## 梯度清零preds = model(inputs) ## inference
loss = criterion(preds, targets) ## 求解loss
loss.backward() ## 反向传播求解梯度
optimizer.step() ## 更新权重参数

1,由于pytorch的动态计算图,当我们使用loss.backward()和opimizer.step()进行梯度下降更新参数的时候,梯度并不会自动清零。并且这两个操作是操作。
2,backward():反向传播求解梯度。
3,step():更新权重参数。

热心网友 时间:2024-10-04 20:42

optimizer.zero_grad()意思是把梯度置零,也就是把loss关于weight的导数变成0.
pytorch对于每个batch大都执行了这样的操作:
optimizer.zero_grad() ## 梯度清零preds = model(inputs) ## inference
loss = criterion(preds, targets) ## 求解loss
loss.backward() ## 反向传播求解梯度
optimizer.step() ## 更新权重参数

1,由于pytorch的动态计算图,当我们使用loss.backward()和opimizer.step()进行梯度下降更新参数的时候,梯度并不会自动清零。并且这两个操作是操作。
2,backward():反向传播求解梯度。
3,step():更新权重参数。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com