CosineAnnealingWarmRestarts
-
class torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0, last_epoch=-1, verbose=False)[source] -
Устанавливает скорость обучения каждого параметра группы с помощью графика косинусного отжига, где устанавливается в начальное значение lr, — количество эпох с момента последнего перезапуска, а — количество эпох между двумя перезапусками в SGDR:
Когда , установите . Когда после перезапуска, установите .
Предложено в SGDR: Stochastic Gradient Descent with Warm Restarts.
- Параметры
-
- оптимизатор (Optimizer) – Оборачиваемый оптимизатор.
- T_0 (int) – Количество итераций для первого перезапуска.
- T_mult (int, необязательно) – Фактор увеличения после перезапуска. По умолчанию: 1.
- eta_min (float, необязательно) – Минимальная скорость обучения. По умолчанию: 0.
- last_epoch (int, необязательно) – Индекс последней эпохи. По умолчанию: -1.
-
verbose (bool) – Если
True, выводит сообщение в стандартный вывод для каждого обновления. По умолчанию:False.
-
get_last_lr() -
Возвращает последнюю вычисленную скорость обучения текущим планировщиком.
-
load_state_dict(state_dict) -
Загружает состояние планировщика.
- Параметры
-
state_dict (dict) – Состояние планировщика. Должен быть объектом, возвращенным из вызова
state_dict().
-
print_lr(is_verbose, group, lr, epoch=None) -
Отобразить текущую скорость обучения.
-
state_dict() -
Возвращает состояние планировщика в виде
dict.Он содержит запись для каждой переменной в self.__dict__, которая не является оптимизатором.
-
step(epoch=None)[source] -
Шаг может быть вызван после каждого обновления партии
Пример
>>> scheduler = CosineAnnealingWarmRestarts(optimizer, T_0, T_mult) >>> iters = len(dataloader) >>> for epoch in range(20): >>> for i, sample in enumerate(dataloader): >>> inputs, labels = sample['inputs'], sample['labels'] >>> optimizer.zero_grad() >>> outputs = net(inputs) >>> loss = criterion(outputs, labels) >>> loss.backward() >>> optimizer.step() >>> scheduler.step(epoch + i / iters)
Эта функция может вызываться вперемежку.
Пример
>>> scheduler = CosineAnnealingWarmRestarts(optimizer, T_0, T_mult) >>> for epoch in range(20): >>> scheduler.step() >>> scheduler.step(26) >>> scheduler.step() # scheduler.step(27), instead of scheduler(20)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.optim.lr_scheduler.CosineAnnealingWarmRestarts.html