Spec-Zone.ru › PyTorch 1

Adamax

class torch.optim.Adamax(params, lr=0.002, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, foreach=None, *, maximize=False) [source]

Реализует алгоритм Adamax (вариант Adam, основанный на бесконечной норме).

Входные данные:γ (lr),β1,β2 (betas),θ0 (параметры),f(θ) (целевая функция),λ (сброс весов),ϵ (эпсилон)Инициализация:m0←0 (первый момент),u0←0 (бесконечная норма)Дляt=1по…делатьgt←∇θft(θt−1)esliλ≠0gt←gt+λθt−1mt←β1mt−1+(1−β1)gtut←max(β2ut−1,∣gt∣+ϵ)θt←θt−1−γmt(1−β1t)utВозвратитьθt\begin{aligned} &\rule{110mm}{0.4pt} \\ &\textbf{Входные данные} : \gamma \text{ (lr)}, \beta_1, \beta_2 \text{ (betas)},\theta_0 \text{ (параметры)},f(\theta) \text{ (целевая функция)}, \: \lambda \text{ (сброс весов)}, \\ &\hspace{13mm} \epsilon \text{ (эпсилон)} \\ &\textbf{Инициализация} : m_0 \leftarrow 0 \text{ (первый момент)}, u_0 \leftarrow 0 \text{ (бесконечная норма)} \\[-1.ex] &\rule{110mm}{0.4pt} \\ &\textbf{Для} \: t=1 \: \textbf{по} \: \ldots \: \textbf{делать} \\ &\hspace{5mm}g_t \leftarrow \nabla_{\theta} f_t (\theta_{t-1}) \\ &\hspace{5mm}if \: \lambda \neq 0 \\ &\hspace{10mm} g_t \leftarrow g_t + \lambda \theta_{t-1} \\ &\hspace{5mm}m_t \leftarrow \beta_1 m_{t-1} + (1 - \beta_1) g_t \\ &\hspace{5mm}u_t \leftarrow \mathrm{max}(\beta_2 u_{t-1}, |g_{t}|+\epsilon) \\ &\hspace{5mm}\theta_t \leftarrow \theta_{t-1} - \frac{\gamma m_t}{(1-\beta^t_1) u_t} \\ &\rule{110mm}{0.4pt} \\[-1.ex] &\bf{Возвратить} \: \theta_t \\[-1.ex] &\rule{110mm}{0.4pt} \\[-1.ex] \end{aligned}

Для получения дополнительной информации об алгоритме см. Adam: A Method for Stochastic Optimization.

Parameters:
  • params (iterable) – итерируемый список параметров для оптимизации или словари, определяющие группы параметров
  • lr (float, optional) – скорость обучения (по умолчанию: 2e-3)
  • betas (Tuple[float, float], optional) – коэффициенты, используемые для вычисления усредненных значений градиента и его квадрата
  • eps (float, optional) – член, добавляемый к знаменателю для повышения числовой устойчивости (по умолчанию: 1e-8)
  • weight_decay (float, optional) – сброс весов (штраф L2) (по умолчанию: 0)
  • foreach (bool, optional) – использовать ли foreach-реализацию оптимизатора (по умолчанию: None)
  • maximize (bool, optional) – максимизировать параметры на основе целевой функции, вместо минимизации (по умолчанию: False)
add_param_group(param_group)

Добавляет группу параметров в оптимизатор Optimizer.

Это может быть полезно при дообучении предварительно обученной сети, так как замороженные слои могут быть сделаны обучаемыми и добавлены в оптимизатор по мере обучения.

Parameters:

param_group (dict) – Указывает, какие тензоры должны быть оптимизированы вместе со специфическими для группы параметрами оптимизации.

load_state_dict(state_dict)

Загружает состояние оптимизатора.

Parameters:

state_dict (dict) – состояние оптимизатора. Должно быть объектом, возвращенным из вызова state_dict().

state_dict()

Возвращает состояние оптимизатора в виде dict.

Он содержит две записи:

  • state - словарь, содержащий текущее состояние оптимизации. Его содержимое

    различается в зависимости от классов оптимизаторов.

  • param_groups - список, содержащий все группы параметров, где каждая

    группа параметров — это словарь.

step(closure=None) [source]

Выполняет один шаг оптимизации.

Parameters:

closure (Callable, optional) – Замыкание, которое повторно оценивает модель и возвращает потерю.

zero_grad(set_to_none=False)

Сбрасывает градиенты всех оптимизируемых torch.Tensor к нулю.

Параметры:

set_to_none (bool) – вместо сброса в ноль, установить градиенты в None. Это, как правило, уменьшит потребление памяти и может незначительно улучшить производительность. Однако это меняет некоторые аспекты поведения. Например: 1. Когда пользователь пытается получить доступ к градиенту и выполнить операции вручную, атрибут None или тензор, заполненный нулями, будет вести себя по-разному. 2. Если пользователь запросит zero_grad(set_to_none=True), а затем выполнит обратное распространение, градиенты .grad гарантированно будут None для параметров, которые не получили градиент. 3. torch.optim оптимизаторы ведут себя по-разному, если градиент равен 0 или None (в одном случае они выполняют шаг с градиентом 0, а в другом – пропускают шаг целиком).

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.optim.Adamax.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API