mindearth.core.get_warmup_cosine_annealing_lr

查看源文件
mindearth.core.get_warmup_cosine_annealing_lr(lr_init, steps_per_epoch, last_epoch, warmup_epochs=0, warmup_lr_init=0.0, eta_min=1e-6)[源代码]

基于余弦衰减函数计算学习率。如果指定了 warmup epoch ,那么 warmup epoch 将通过线性退火进行预热。 对于第i步,余弦decayed_learning_rate[i]的计算公式为:

decayed_learning_rate[i]=eta_min+0.5(lr_initeta_min)(1+cos(current_epochlast_epochπ))

其中 current_epoch=floor(isteps_per_epoch)

如果指定了 warmup epoch ,则对于 waramup epoch 中的第i步,warmup_learning_rate[i]的计算公式为:

warmup_learning_rate[i]=(lr_initwarmup_lr_init)i/warmup_steps+warmup_lr_init
参数:
  • lr_init (float) - 初始学习率,正浮点值。

  • steps_per_epoch (int) - 每一轮迭代的训练步数,正整数。

  • last_epoch (int) - 每个epoch的步数,正整数。

  • warmup_epochs (int) - 预热总轮数,默认: 0

  • warmup_lr_init (float) - 预热初始化学习率,默认: 0.0

  • eta_min (float) - 最小学习率,默认: 1e-6

返回:

numpy.array,学习率数组。

异常:
  • TypeError - 如果 lr_initwarmup_lr_initeta_min 不是float。

  • TypeError - 如果 steps_per_epochwarmup_epochslast_epoch 不是int。

支持平台:

Ascend GPU CPU

样例:

>>> from mindearth import get_warmup_cosine_annealing_lr
>>> lr_init = 0.001
>>> steps_per_epoch = 3
>>> last_epoch = 5
>>> warmup_epochs = 1
>>> lr = get_warmup_cosine_annealing_lr(lr_init, steps_per_epoch, last_epoch, warmup_epochs=warmup_epochs)
>>> print(lr)
[3.3333333e-04 6.6666666e-04 1.0000000e-03 9.0460398e-04 9.0460398e-04
9.0460398e-04 6.5485400e-04 6.5485400e-04 6.5485400e-04 3.4614600e-04
3.4614600e-04 3.4614600e-04 9.6396012e-05 9.6396012e-05 9.6396012e-05]