mindformers.core.CosineAnnealingWarmRestarts

查看源文件
class mindformers.core.CosineAnnealingWarmRestarts(base_lr: float, t_0: int, t_mult: int = 1, eta_min: float = 0., **kwargs)[源代码]

使用余弦退火调度设置每个参数组的学习率。其中 ηmax 被设为初始学习率, Tcur 表示自上次重启以来的epoch数量, Ti 表示两次热重启之间的epoch数量,在SGDR中计算学习率:

ηt=ηmin+12(ηmaxηmin)(1+cos(TcurTiπ))

Tcur=Ti 时,设置 ηt=ηmin 。 当 Tcur=0 (重启后),设置 ηt=ηmax

请参阅论文 SGDR: Stochastic Gradient Descent with Warm Restarts

参数:
  • base_lr (float) - 初始学习率。

  • t_0 (int) - 第一个重启的周期数。

  • t_mult (int, 可选) - 重启周期的倍数。默认值: 1

  • eta_min (float, 可选) - 学习率的最小值。默认值: 0.

输入:
  • global_step (int) - 全局步数。

输出:

学习率。

样例:

>>> import mindspore as ms
>>> from mindformers.core import CosineAnnealingWarmRestarts
>>>
>>> ms.set_context(mode=ms.GRAPH_MODE)
>>> base_lr = 0.005
>>> t_0 = 10
>>> t_mult = 2
>>> eta_min = 0.0000001
>>>
>>> cosine_annealing_restart = CosineAnnealingWarmRestarts(base_lr=base_lr,
...                                                        t_0=t_0,
...                                                        t_mult=t_mult,
...                                                        eta_min=eta_min)
>>> print(cosine_annealing_restart(1))
0.0048776437
>>> print(cosine_annealing_restart(15))
0.0042677815