Skip to content

WarmUp(学习率预热)、CosineAnnealingWarmRestarts(带重启的余弦退火模型)

License

Notifications You must be signed in to change notification settings

firstelfin/WarmUpLR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WarmUpLR

WarmUp(学习率预热)、CosineAnnealingWarmRestarts(带重启的余弦退火模型)

目录:

1、学习率示意图

CosineAnnealingWarmRestarts、WarmUp+CosineAnnealingWarmRestarts的示意图为:

右图中的红线右边部分,其中绿色曲线是从第9个epoch重启之后的学习率,可以发现与左图一致!

2、CosineAnnealingWarmRestarts的使用

先定义余弦周期性重启模型的基本参数:

param = {
    "eta_max": 0.01,
    "eta_min": 1e-5,
    "t0": 6,
    "ti": 2,
    "steps": 500,
}

eta_maxeta_min分别表示学习率的上下界;t0是基础的学习率重启周期,6表示基础周期为6个epochs;ti是周期的膨胀率;steps表示每个epoch的迭代次数。

CosineAnnealingWarmRestarts实例化:

cosine = CosineAnnealingWarmRestarts(**param)

获取某次迭代的学习率:

cosine.get_learning_rate(epoch, step_num)

注意这里的step_num可以不传,学习率的更新是渐进的,不能直接指定获取某epoch、某次迭代的学习率,只能从某个epoch第零次迭代开始获取。如果使用checkpoint,这需要对学习率进行epoch初始化:

cosine.epoch_step_modify(epoch)

3、WarmUp的使用

初始化原始学习率:

cosine2 = CosineAnnealingWarmRestarts(**param)

使用checkpoint的epoch初始化:

cosine2.epoch_step_modify(epoch)

初始化warm up学习率:

warm_up_lr = WarmUpLR(cosine, warm_epochs=2)

获取某次迭代的学习率:

warm_up_lr.get_learning_rate(epoch, step_num)

上述两者在训练中的调用参考test中的test_warmup_and_cosine.py文件。

About

WarmUp(学习率预热)、CosineAnnealingWarmRestarts(带重启的余弦退火模型)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages