神经网络有许多影响模型性能的超参数。一个最基本的超参数是学习率(LR),它决定了在训练步骤之间模型权重的变化程度。在最简单的情况下,LR值是0到1之间的固定值。
选择正确的LR值是具有挑战性。一方面较大的学习率有助于算法快速收敛,但它也会导致算法在最小值附近跳跃而没有达到它,甚至在它太大时跳过它。另一方面,较小的学习率可以更好地收敛到最小值,但是如果优化器太小,可能需要太长时间才能收敛,或者陷入停滞。
什么是学习率调度器?
一种帮助算法快速收敛到最优的解决方案是使用学习率调度器。学习率调度器在训练过程中根据预先定义的时间表调整学习率。
通常,学习率在训练开始时设置为比较高的值,允许更快的收敛。随着训练的进行,学习率会降低,使收敛到最优,获得更好的性能。在训练过程中降低学习率也称为退火或衰减。
学习率调度器有很多个,并且我们还可以自定义调度器。本文将介绍PyTorch中不同的预定义学习率调度器如何在训练期间调整学习率
学习率调度器
对于本文,我们使用PyTorch 1.13.0版本。你可以在PyTorch文档中阅读更多关于学习率调度器的细节。
import torch
在本文末尾的附录中会包含用于可视化PyTorch学习率调度器的Python代码。
1、StepLR
在每个预定义的训练步骤数之后,StepLR通过乘法因子降低学习率。
from torch.optim.lr_scheduler import StepLR
scheduler = StepLR(optimizer,
step_size = 4, # Period of learning rate decay
gamma = 0.5) # Multiplicative factor of learning rate decay
完整文章:
https://avoid.overfit.cn/post/9987b70f3d1e47d5b6a0b5ff70d8133f
标签:训练,调度,学习,PyTorch,可视化,收敛,StepLR From: https://www.cnblogs.com/deephub/p/16970872.html