gpt4 book ai didi

python - 如何在pytorch中打印Adadelta中的 "actual"学习率

转载 作者:行者123 更新时间:2023-11-28 18:06:02 28 4
gpt4 key购买 nike

简而言之:

在 pytorch 中使用 adadelta 优化器时,我无法绘制 lr/epoch 曲线,因为 optimizer.param_groups[0]['lr'] 总是返回相同的值。

详细说明:

Adadelta 可以仅使用一阶信息随时间动态适应,并且具有超越 Vanilla 随机梯度下降 [1] 的最小计算开销。

在pytorch中,Adadelta的源码在这里https://pytorch.org/docs/stable/_modules/torch/optim/adadelta.html#Adadelta

因为它不需要手动调整学习率,据我所知,我们不必在声明优化器后设置任何调度

self.optimizer = torch.optim.Adadelta(self.model.parameters(), lr=1)

检查学习率的方法是

current_lr = self.optimizer.param_groups[0]['lr']

问题是它总是返回 1(初始 lr)。

谁能告诉我怎样才能得到真正的学习率,这样我才能画出 lr/epch 曲线?

[1] https://arxiv.org/pdf/1212.5701.pdf

最佳答案

检查:self.optimizer.state。这是用 lr 优化的,并在优化过程中使用。

根据文档,lr 只是:

lr (float, optional): coefficient that scale delta before it is applied to the parameters (default: 1.0)

https://pytorch.org/docs/stable/_modules/torch/optim/adadelta.html

已编辑:您可能会在 self.optimizer.state 值中找到 acc_delta 值,但您需要查看该词典包含的词典:

dict_with_acc_delta = [self.optimizer.state[i] for i in self.optimizer.state.keys() if "acc_delta" in self.optimizer.state[i].keys()]
acc_deltas = [i["acc_delta"] for i in dict_with_acc_delta]

我有八层,acc_deltas 列表中的元素形状如下

[torch.Size([25088]),
torch.Size([25088]),
torch.Size([4096, 25088]),
torch.Size([4096]),
torch.Size([1024, 4096]),
torch.Size([1024]),
torch.Size([102, 1024]),
torch.Size([102])]

关于python - 如何在pytorch中打印Adadelta中的 "actual"学习率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405934/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com