尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

PyTorch CosineAnnealingLR的T_max和eta_min参数设置

PyTorch CosineAnnealingLR的T_max和eta_min参数设置 在深度学习训练中学习率调度器Learning Rate Scheduler是至关重要的超参数优化工具。其中余弦退火Cosine Annealing因其平滑的衰减特性和优秀的性能表现已成为最流行的调度策略之一。CosineAnnealingLR 基础余弦退火的学习率变化遵循余弦函数\(\eta_t\eta_{min}\frac12(\eta_{max}-\eta_{min})\Big(1\cos\big(\frac{t}{T_{max}}\pi\big)\Big)\)\(\eta_t\)当前步学习率\(\eta_{max}\)优化器初始学习率\(\eta_{min}\)eta_min学习率下限t当前 stepbatch 迭代次数\(T_{max}\)余弦周期长度当 \(tT_{max}\)\(\cos(\pi)-1\)学习率 \(\eta_{min}\)。基本用法import torch import torch.optim as optim from torch.optim.lr_scheduler import CosineAnnealingLR # 定义优化器 optimizer optim.Adam(model.parameters(), lr0.001) # 创建余弦退火调度器 scheduler CosineAnnealingLR( optimizer, T_max100, # 周期长度 eta_min1e-6 # 最小学习率 )T_max 参数T_max控制学习率从最大值下降到最小值所需的步数。整个训练全部迭代步数一次完整余弦衰减训练结束 lr 到达 eta_min。通常设置为T_max total_iter (样本数 // batch_size) × epochsT_max epochs配置调用 scheduler.step () 时机T_max total_iterations每个 batch 内部执行一次每 1 个 step 调用T_max epochsepoch 循环末尾调用一个 epoch 只 step 一次T_max total_iterations总迭代 step使用条件两个必须同时满足scheduler.step()写在内层 batch 循环每跑完一个 batch 调用一次for epoch in range(epochs): for imgs, label in dataloader: # 前向、loss、反向传播 optimizer.step() scheduler.step() #每个batch调用T_max total_iterations (num_samples // batch_size) * epochsT_max epochsT_max 数值等于轮数调度器调用时机# 正确配套写法 scheduler CosineAnnealingLR(optimizer, T_maxepochs, eta_min1e‑6) for epoch in range(epochs): for imgs, label in dataloader: #训练只更新optimizer不调用scheduler.step() optimizer.step() scheduler.step() #❗每个epoch结束才调用一次假设epoch100学习率初始值为0.0006当T_max epochs则学习率变化当T_max epochs则学习率变化当T_max epochs则学习率变化下图学习率最小值停留在0.0003eta_min 参数eta_min余弦退火的学习率最低下限。eta_min0训练末尾学习率直接归零参数不再更新eta_min1e‑6工程常用保留极小学习率允许参数微小更新避免训练末期完全冻结。不建议直接置 0部分场景会出现收敛停滞。CV 任务车道线、检测推荐eta_min1e‑6 ~ 1e‑7。
返回列表