我试图遵循thispytorch的optim文档,使用optimizer.param_groups
对多个学习率调度器进行分组,但它似乎只适用于LambdaLR
一个
如果我有我的模型:
net = Model()
我天真地尝试添加具有以下内容的调度程序:
learning_rate = 0.02
optimizer = optim.Adam(net.parameters(), lr = learning_rate)
net.optimizer = optimizer
scheduler1 = torch.optim.lr_scheduler.CyclicLR(net.optimizer, base_lr=1e-10, max_lr=1e-3, step_size_up=3000, mode="triangular2", cycle_momentum=False)
net.scheduler1 = scheduler1
scheduler2 = torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr=1e3, max_lr=1e-1, step_size_up=1000, mode="triangular2", cycle_momentum=False)
net.scheduler2 = scheduler2
我试着用scheduler1
来训练我的一个神经网络,而scheduler2
只是用于它的值。也就是说,在每个历元,我都使用它的值来插入一些函数:
for epoch in num_epochs:
loss = 5 - optimizer.param_groups[0]["lr"]
请注意,这只是一个示例函数
问题是,我认为该模型只是将scheduler2
作为其调度器。自从
optimizer.param_groups[1]["lr"]
返回:
IndexError: list index out of range
更新1
为了澄清,我的模型中有一个神经网络net
。我希望这个神经网络有一个lr调度器,scheduler1
。在我的模型net
中有一个特定的函数,它需要在每个历元中取特定的值。它需要获取的值类似于scheduler2
中的值。因此,我需要将两个调度器添加到我的模型中,第一个用于我的神经网络,第二个用于我的函数(除了历元数之外,与任何模型的参数无关)
目前没有回答
相关问题 更多 >
编程相关推荐