在Python中使用observe_lr()观察学习率的变化
发布时间:2023-12-19 04:26:27
在Python中,可以使用observe_lr()函数来观察学习率的变化。observe_lr()函数是在已经创建好的优化器对象上调用的。下面是一个使用observe_lr()观察学习率变化的示例代码:
import torch
import torch.optim as optim
# 创建模型和优化器
model = torch.nn.Linear(1, 1)
optimizer = optim.SGD(model.parameters(), lr=0.1)
def callback_fn(optimizer):
# 获取当前学习率
lr = optimizer.param_groups[0]['lr']
print(f"Current learning rate: {lr}")
# 调用observe_lr()函数,并传入回调函数
optimizer.observe_lr(callback_fn)
# 执行优化器的迭代更新
for epoch in range(10):
optimizer.zero_grad()
output = model(torch.tensor([1.0]))
loss = output.mean()
loss.backward()
optimizer.step()
在上面的示例中,首先创建了一个线性模型和一个SGD优化器。然后定义了一个回调函数callback_fn,该函数用于获取当前学习率并打印出来。接下来,调用observe_lr()函数,将回调函数作为参数传入。在使用优化器进行迭代更新的过程中,每次更新学习率时,都会自动调用回调函数,打印出当前的学习率。
可以根据实际需要,在回调函数中执行其他操作,如保存学习率变化的记录、根据学习率的变化动态调整模型参数等。
需要注意的是,observe_lr()函数只能在使用PyTorch 1.8.0及以上版本时使用,且只适用于一些支持学习率变化的优化器,如SGD、Adam等。
