РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
562 of 769 menu

Класс ConstantLR

Класс ConstantLR представляет собой планировщик скорости обучения, который умножает начальную скорость обучения на постоянный коэффициент factor в течение первых total_iters эпох, а затем восстанавливает исходную скорость. Параметр factor задаёт множитель в диапазоне от 0 до 1, параметр total_iters определяет количество шагов, в течение которых применяется уменьшение. Планировщик принимает оптимизатор и дополнительные параметры, такие как last_epoch для возобновления обучения и verbose для вывода сообщений.

Синтаксис

torch.optim.lr_scheduler.ConstantLR( optimizer, factor=0.5, total_iters=5, last_epoch=-1, verbose=False )

Пример

Создадим простую модель и применим планировщик ConstantLR с коэффициентом 0.5 на первых 5 эпохах:

import torch model = torch.nn.Linear(10, 1) optimizer = torch.optim.SGD(model.parameters(), lr=0.1) scheduler = torch.optim.lr_scheduler.ConstantLR( optimizer, factor=0.5, total_iters=5 ) for epoch in range(10): optimizer.step() scheduler.step() print(f'Epoch {epoch+1}: lr = {optimizer.param_groups[0]["lr"]:.4f}')

Результат выполнения кода:

Epoch 1: lr = 0.0500 Epoch 2: lr = 0.0500 Epoch 3: lr = 0.0500 Epoch 4: lr = 0.0500 Epoch 5: lr = 0.0500 Epoch 6: lr = 0.1000 Epoch 7: lr = 0.1000 Epoch 8: lr = 0.1000 Epoch 9: lr = 0.1000 Epoch 10: lr = 0.1000

Пример

Используем планировщик ConstantLR с коэффициентом 0.3 на протяжении 10 эпох для оптимизатора Adam:

import torch torch.manual_seed(0) model = torch.nn.Linear(5, 1) optimizer = torch.optim.Adam(model.parameters(), lr=0.01) scheduler = torch.optim.lr_scheduler.ConstantLR( optimizer, factor=0.3, total_iters=10, verbose=True ) for epoch in range(12): optimizer.step() scheduler.step()

Результат выполнения кода:

"Adjusting learning rate of group 0 to 3.0000e-03." Epoch 1: lr = 0.0030 Epoch 2: lr = 0.0030 Epoch 3: lr = 0.0030 Epoch 4: lr = 0.0030 Epoch 5: lr = 0.0030 Epoch 6: lr = 0.0030 Epoch 7: lr = 0.0030 Epoch 8: lr = 0.0030 Epoch 9: lr = 0.0030 Epoch 10: lr = 0.0030 Epoch 11: lr = 0.0100 Epoch 12: lr = 0.0100

Пример

Возобновим обучение с сохранённого состояния планировщика, используя параметр last_epoch:

import torch model = torch.nn.Linear(10, 1) optimizer = torch.optim.SGD(model.parameters(), lr=0.05) scheduler = torch.optim.lr_scheduler.ConstantLR( optimizer, factor=0.5, total_iters=8, last_epoch=3 ) for epoch in range(5): optimizer.step() scheduler.step() print(f'Epoch {epoch+1}: lr = {optimizer.param_groups[0]["lr"]:.4f}')

Результат выполнения кода:

Epoch 1: lr = 0.0250 Epoch 2: lr = 0.0250 Epoch 3: lr = 0.0250 Epoch 4: lr = 0.0250 Epoch 5: lr = 0.0500

Смотрите также

  • класс StepLR,
    который уменьшает скорость обучения с заданным шагом
  • класс ExponentialLR,
    который экспоненциально уменьшает скорость обучения
  • класс LinearLR,
    который линейно изменяет скорость обучения
  • класс MultiplicativeLR,
    который умножает скорость обучения на заданную функцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить