CosineAnnealingLR#
- class torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0.0, last_epoch=-1)[source]#
Set the learning rate of each parameter group using a cosine annealing schedule.
The learning rate is updated recursively using:
This implements a recursive approximation of the closed-form schedule proposed in SGDR: Stochastic Gradient Descent with Warm Restarts:
where:
is the learning rate at step
is the number of epochs since the last restart
is the maximum number of epochs in a cycle
Note
Although SGDR includes periodic restarts, this implementation performs cosine annealing without restarts, so and increases monotonically with each call to
step().- Parameters
Example
>>> num_epochs = 100 >>> scheduler = CosineAnnealingLR(optimizer, T_max=num_epochs) >>> for epoch in range(num_epochs): >>> train(...) >>> validate(...) >>> scheduler.step()
- get_last_lr()[source]#
Get the most recent learning rates computed by this scheduler.
- Returns
A
listof learning rates with entries for each of the optimizer’sparam_groups, with the same types as theirgroup["lr"]s.- Return type
Note
The returned
Tensors are copies, and never alias the optimizer’sgroup["lr"]s.
- get_lr()[source]#
Compute the next learning rate for each of the optimizer’s
param_groups.Scales the
group["lr"]s in the optimizer’sparam_groupssuch that their learning rates approximate- Returns
A
listof learning rates for each of the optimizer’sparam_groupswith the same types as their currentgroup["lr"]s.- Return type
Note
If you’re trying to inspect the most recent learning rate, use
get_last_lr()instead.Note
The returned
Tensors are copies, and never alias the optimizer’sgroup["lr"]s.
- load_state_dict(state_dict)[source]#
Load the scheduler’s state.
- Parameters
state_dict (dict) – scheduler state. Should be an object returned from a call to
state_dict().
- state_dict()[source]#
Return the state of the scheduler as a
dict.It contains an entry for every variable in
self.__dict__which is not the optimizer.
- step(epoch=None)[source]#
Step the scheduler.
- Parameters
epoch (int, optional) –
Deprecated since version 1.4: If provided, sets
last_epochtoepochand uses_get_closed_form_lr()if it is available. This is not universally supported. Usestep()without arguments instead.
Note
Call this method after calling the optimizer’s
step().