mindformers.core.ConstantWarmUpLR

查看源文件
class mindformers.core.ConstantWarmUpLR(learning_rate: float, warmup_steps: int = None, warmup_lr_init: float = 0., warmup_ratio: float = None, total_steps: int = None, decay_ratio: float = None, **kwargs)[源代码]

恒定预热学习率。

该学习率在预热阶段保持恒定的学习率。此策略特别适用于需要在训练初期使用稳定、较低的学习率,以避免如梯度爆炸等问题,然后再过渡到主要学习率调度的场景。

在预热阶段,学习率保持在一个固定的值,记为 \(\eta_{\text{warmup}}\) 。预热阶段的学习率公式为:

\[\eta_t = \eta_{\text{warmup}}\]

其中, \(\eta_{\text{warmup}}\) 是在预热步骤中应用的固定学习率, \(t\) 代表当前步骤。

在预热阶段结束后,学习率过渡到主要学习率,记为 \(\eta_{\text{main}}\) 。过渡后的学习率公式为:

\[\eta_t = \eta_{\text{main}}\]
参数:
  • learning_rate (float) - 学习率的初始值。

  • warmup_steps (int) - 预热阶段的步数。默认值: None

  • warmup_lr_init (float) - 预热阶段的初始学习率。默认值: 0.

  • warmup_ratio (float) - 预热阶段占总训练步数的比例。默认值: None

  • total_steps (int) - 总的预热步数。默认值: None

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

输出:

学习率。

样例:

>>> import mindspore as ms
>>> from mindformers.core import ConstantWarmUpLR
>>>
>>> ms.set_context(mode=ms.GRAPH_MODE)
>>> total_steps = 20
>>> warmup_steps = 10
>>> learning_rate = 0.005
>>>
>>> constant_warmup = ConstantWarmUpLR(learning_rate=learning_rate,
...                                    warmup_steps=warmup_steps,
...                                    total_steps=total_steps)
>>> print(constant_warmup(1))
0.0005
>>> print(constant_warmup(15))
0.005