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