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

Класс Adadelta

Класс Adadelta реализует адаптивный метод оптимизации, предложенный в 2012 году. В отличие от многих других оптимизаторов, Adadelta не требует задания начальной скорости обучения, так как динамически адаптирует её в процессе обучения. Первый параметр конструктора принимает список оптимизируемых параметров модели. Вторым параметром можно передать начальную скорость обучения (по умолчанию 1.0), третьим - коэффициент затухания (по умолчанию 0.9).

Синтаксис

torch.optim.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06)

Параметры

Конструктор класса Adadelta принимает следующие параметры:

  • params (iterable) - итерируемый список оптимизируемых параметров модели;
  • lr (float, опционально) - начальная скорость обучения (по умолчанию 1.0);
  • rho (float, опционально) - коэффициент затухания для скользящего среднего квадратов градиентов (по умолчанию 0.9);
  • eps (float, опционально) - небольшое число для улучшения численной стабильности (по умолчанию 1e-06).

Пример базового использования

Давайте создадим простую модель и обучим её с помощью оптимизатора Adadelta:

import torch import torch.nn as nn import torch.optim as optim torch.manual_seed(0) model = nn.Linear(10, 1) optimizer = optim.Adadelta(model.parameters()) print(optimizer)

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

Adadelta ( Parameter Group 0 eps: 1e-06 lr: 1.0 rho: 0.9 weight_decay: 0 )

Пример с настройкой параметров

Давайте создадим оптимизатор с пользовательскими значениями параметров:

import torch import torch.nn as nn import torch.optim as optim torch.manual_seed(0) model = nn.Linear(10, 1) optimizer = optim.Adadelta( model.parameters(), lr=0.5, rho=0.95, eps=1e-08 ) print(optimizer)

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

Adadelta ( Parameter Group 0 eps: 1e-08 lr: 0.5 rho: 0.95 weight_decay: 0 )

Пример обучения модели

Давайте покажем полный цикл обучения с оптимизатором Adadelta:

import torch import torch.nn as nn import torch.optim as optim torch.manual_seed(0) model = nn.Linear(5, 1) optimizer = optim.Adadelta(model.parameters()) criterion = nn.MSELoss() x = torch.randn(10, 5) y = torch.randn(10, 1) for epoch in range(50): optimizer.zero_grad() pred = model(x) loss = criterion(pred, y) loss.backward() optimizer.step() if epoch % 10 == 0: print(f"Epoch {epoch}, Loss: {loss.item():.4f}")

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

Epoch 0, Loss: 0.5679 Epoch 10, Loss: 0.4895 Epoch 20, Loss: 0.4394 Epoch 30, Loss: 0.4095 Epoch 40, Loss: 0.3939

Пример с регуляризацией

Давайте добавим регуляризацию с помощью параметра weight_decay:

import torch import torch.nn as nn import torch.optim as optim torch.manual_seed(0) model = nn.Linear(10, 5) optimizer = optim.Adadelta( model.parameters(), weight_decay=0.01 ) print(f"Number of parameter groups: {len(optimizer.param_groups)}")

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

Number of parameter groups: 1

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

  • класс SGD,
    который реализует классический стохастический градиентный спуск
  • класс Adam,
    который комбинирует преимущества нескольких адаптивных методов
  • класс RMSprop,
    который нормализует градиенты с помощью скользящего среднего
  • класс Adagrad,
    который адаптирует скорость обучения для каждого параметра индивидуально
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить