使用余弦退火(CosineAnnealing)调整学习率的代码实现

2024-07-29
以下是使用 PyTorch 实现的 YOLOv5 的余弦退火学习率代码示例: ```python import torch.optim as optim from torch.optim.lr_scheduler import CosineAnnealingLR # 定义优化器和初始学习率 optimizer=optim.SGD(model.parameters(), lr=0.01, momentum=0.9, weight_decay=5e-4) # 定义余弦退火学习率调度器 scheduler=CosineAnnealingLR(optimizer, T_max=200, eta_min=0.0001) for epoch in range(200): train(...) val(...) scheduler.step() # 调用调度器更新学习率 ``` 在上面的代码中,我们首先定义了一个 SGD 优化器,并将初始学习率设置为 0.01。然后,我们定义了一个余弦退火学习率调度器,其中 T_max 表示一个周期的迭代次数,在本例中为 200。eta_min 表示学习率的最小值,在本例中为 0.0001。 在训练过程中,我们在每个 epoch 结束时调用调度器的 step 方法,以更新学习率。CosineAnnealingLR 调度器会自动计算当前迭代次数,从而确定当前是在一个周期的哪个位置。在每个周期结束时,学习率会被重置为初始学习率

平台注册入口