为什么先更新了学习率,后优化权重呢? #123
-
请教一下,1-pretrain.py 的 train_epoch 方法中,先更新了 optimizer 的 lr,然后才计算损失和更新权重,正常顺序不应该最后再更新学习率吗?本人是初学者。 |
Beta Was this translation helpful? Give feedback.
Answered by
jingyaogong
Jan 23, 2025
Replies: 1 comment 1 reply
-
事实上二者基本一致,并无影响 放一段deepseek的回复: 在深度学习中,学习率更新在前(即在优化器更新参数之前更新学习率)是更常见的做法。这种顺序的逻辑是:
为什么学习率更新在前更常见?
代码示例(PyTorch)# 更常见的顺序:学习率更新在前
for epoch in range(num_epochs):
for batch in data_loader:
# 前向传播、计算损失
loss = model(batch)
# 反向传播
loss.backward()
# 更新学习率
scheduler.step()
# 更新模型参数
optimizer.step()
# 清零梯度
optimizer.zero_grad() 总结学习率更新在前是更常见的做法,因为它能确保学习率调整立即生效,更符合动态调整学习率的逻辑。如果你的任务有特殊需求,也可以尝试学习率更新在后的顺序,但需要明确其影响。 |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
AnnaPatio
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
事实上二者基本一致,并无影响
放一段deepseek的回复:
在深度学习中,学习率更新在前(即在优化器更新参数之前更新学习率)是更常见的做法。这种顺序的逻辑是:
学习率更新在前:
学习率更新在后:
为什么学习率更新在前更常见?
代码示例(PyTorch)