SWALR

torch.optim.swa_utils.SWALR(optimizer, swa_lr, anneal_epochs=10, anneal_strategy='cos', last_epoch=-1)[源代码]

将每个参数组的学习率调整(退火)到一个固定值。

此学习率调度程序旨在与随机权重平均(SWA)方法配合使用(参见torch.optim.swa_utils.AveragedModel)。

参数
  • optimizer (torch.optim.Optimizer) — 封装后的优化器

  • swa_lrs (floatlist) – 所有参数组的共同学习率值,或每个参数组单独的学习率值。

  • annealing_epochs (int) – 良化阶段的 epochs 数量,默认为 10

  • annealing_strategy (str) – “cos” 或 “linear”; 用于指定退火策略: “cos” 表示余弦退火, “linear” 表示线性退火(默认值:“cos”)

  • last_epoch (int) — 表示最后一个纪元的索引,默认值为 -1。

可以将SWALR调度器与其他调度器结合使用,在训练后期切换到恒定的学习率,如以下示例所示。

示例

>>> loader, optimizer, model = ...
>>> lr_lambda = lambda epoch: 0.9
>>> scheduler = torch.optim.lr_scheduler.MultiplicativeLR(optimizer,
>>>        lr_lambda=lr_lambda)
>>> swa_scheduler = torch.optim.swa_utils.SWALR(optimizer,
>>>        anneal_strategy="linear", anneal_epochs=20, swa_lr=0.05)
>>> swa_start = 160
>>> for i in range(300):
>>>      for input, target in loader:
>>>          optimizer.zero_grad()
>>>          loss_fn(model(input), target).backward()
>>>          optimizer.step()
>>>      if i > swa_start:
>>>          swa_scheduler.step()
>>>      else:
>>>          scheduler.step()
get_last_lr()

返回当前调度器计算出的最新学习率。

返回类型

List [float]

get_lr()[源代码]

获取学习率。

load_state_dict(state_dict)

加载调度器的状态。

参数

state_dict (dict) – 调度器状态。应为调用state_dict() 返回的对象。

print_lr(is_verbose, group, lr, epoch=None)

显示当前学习率。

自版本 2.4 起已弃用:print_lr() 已被弃用,请使用 get_last_lr() 来访问学习率。

state_dict()

返回调度器的状态,形式为 dict

它包含了 self.__dict__ 中每个非优化器变量的条目。

step(epoch=None) 由于上述代码格式已经较为简洁,直接翻译可能难以形成自然语言描述。但根据上下文和意图,可以尝试如下表述: 进行一个训练步骤,参数`epoch`可选设置为`None`。

执行一个步骤。

本页目录