欢迎访问宙启技术站
智能推送

在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等。