当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python PyTorch CyclicLR用法及代码示例

本文简要介绍python语言中 torch.optim.lr_scheduler.CyclicLR 的用法。

用法:

class torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr, max_lr, step_size_up=2000, step_size_down=None, mode='triangular', gamma=1.0, scale_fn=None, scale_mode='cycle', cycle_momentum=True, base_momentum=0.8, max_momentum=0.9, last_epoch=- 1, verbose=False)

参数

  • optimizer(Optimizer) -包装优化器。

  • base_lr(float或者list) -初始学习率,它是每个参数组循环中的下边界。

  • max_lr(float或者list) -每个参数组在循环中的上层学习率边界。从函数上讲,它定义了周期幅度 (max_lr - base_lr)。任何周期的 lr 是base_lr 和一些幅度缩放的总和;因此,根据缩放函数,实际上可能无法达到 max_lr。

  • step_size_up(int) -在一个周期增加的一半中的训练迭代次数。默认值:2000

  • step_size_down(int) -循环减半的训练迭代次数。如果step_size_down 为无,则设置为step_size_up。默认值:无

  • mode(str) -{三角形,三角形2,exp_range}之一。值对应于上面详述的政策。如果 scale_fn 不是 None,则忽略此参数。默认值:‘triangular’

  • gamma(float) -‘exp_range’ 缩放函数中的常数:gamma**(循环迭代)默认值:1.0

  • scale_fn(函数) -由单个参数 lambda 函数定义的自定义缩放策略,其中 0 <= scale_fn(x) <= 1 表示所有 x >= 0。如果指定,则忽略 ‘mode’。默认值:无

  • scale_mode(str) -{‘cycle’, ‘iterations’}。定义 scale_fn 是根据循环次数还是循环迭代(自循环开始以来的训练迭代)进行评估。默认值:‘cycle’

  • cycle_momentum(bool) -如果 True ,动量与 ‘base_momentum’ 和 ‘max_momentum’ 之间的学习率成反比循环。默认值:真

  • base_momentum(float或者list) -每个参数组的循环中较低的动量边界。请注意,动量循环与学习率成反比;在一个周期的峰值,动量是‘base_momentum’,学习率是‘max_lr’。默认值:0.8

  • max_momentum(float或者list) -每个参数组在循环中的上动量边界。从函数上讲,它定义了周期幅度 (max_momentum - base_momentum)。任何周期的动量是max_momentum的差异和幅度的一些缩放;因此,根据缩放函数,实际上可能无法达到 base_momentum。请注意,动量循环与学习率成反比;在循环开始时,动量为‘max_momentum’,学习率为‘base_lr’ 默认值:0.9

  • last_epoch(int) -最后一批的索引。恢复训练作业时使用此参数。自从step()应该在每批之后调用,而不是在每个 epoch 之后调用,这个数字代表总数量批次计算的,而不是计算的 epoch 总数。当last_epoch=-1 时,调度从头开始。默认值:-1

  • verbose(bool) -如果 True ,每次更新都会向标准输出打印一条消息。默认值:False

根据循环学习率策略 (CLR) 设置每个参数组的学习率。该策略以恒定频率循环两个边界之间的学习率,如论文中所述训练神经网络的循环学习率.两个边界之间的距离可以在per-iteration 或per-cycle 的基础上进行缩放。

循环学习率策略在每批之后改变学习率。 step 应该在批次用于训练后调用。

如本文所述,此类具有三个内置策略:

  • “triangular”:没有幅度缩放的基本三角循环。

  • “triangular2”:一个基本的三角循环,每个循环将初始幅度缩放一半。

  • “exp_range”:在每个循环迭代中按 缩放初始幅度的循环。

此实现改编自 github 存储库:bckenstler/CLR

示例

>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
>>> scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr=0.01, max_lr=0.1)
>>> data_loader = torch.utils.data.DataLoader(...)
>>> for epoch in range(10):
>>>     for batch in data_loader:
>>>         train_batch(...)
>>>         scheduler.step()

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.optim.lr_scheduler.CyclicLR。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。