Spec-Zone.ru › PyTorch 2.14

Adamax

class torch.optim.Adamax(params, lr=0.002, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, foreach=None, *, maximize=False, differentiable=False, capturable=False) [исходный код]

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

input:γ (lr),β1,β2 (betas),θ0 (params),f(θ) (objective),λ (weight decay),ϵ (epsilon)initialize:m0←0 ( first moment),u0←0 ( infinity norm)fort=1to…dogt←∇θft(θt−1)ifλ≠0gt←gt+λθt−1mt←β1mt−1+(1−β1)gtut←max(β2ut−1,∣gt∣+ϵ)θt←θt−1−γmt(1−β1t)utreturnθt\begin{aligned} &\rule{110mm}{0.4pt} \\ &\textbf{input} : \gamma \text{ (lr)}, \beta_1, \beta_2 \text{ (betas)},\theta_0 \text{ (params)},f(\theta) \text{ (objective)}, \: \lambda \text{ (weight decay)}, \\ &\hspace{13mm} \epsilon \text{ (epsilon)} \\ &\textbf{initialize} : m_0 \leftarrow 0 \text{ ( first moment)}, u_0 \leftarrow 0 \text{ ( infinity norm)} \\[-1.ex] &\rule{110mm}{0.4pt} \\ &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do} \\ &\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{return} \: \theta_t \\[-1.ex] &\rule{110mm}{0.4pt} \\[-1.ex] \end{aligned}

Дополнительные сведения об алгоритме см. в статье Adam: метод стохастической оптимизации.

Параметры:
  • params (iterable) – итерируемый объект параметров или named_parameters для оптимизации либо итерируемый объект словарей, определяющих группы параметров. При использовании named_parameters все параметры во всех группах должны иметь имена
  • lr (float, Tensor, необязательно) – скорость обучения (по умолчанию: 2e-3)
  • betas (Tuple[float, float], необязательно) – коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата
  • eps (float, необязательно) – слагаемое, добавляемое к знаменателю для повышения численной устойчивости (по умолчанию: 1e-8)
  • weight_decay (float, необязательно) – затухание весов (штраф L2) (по умолчанию: 0)
  • foreach (bool, необязательно) – использовать ли реализацию оптимизатора foreach. Если пользователь не указал это значение (то есть foreach равен None), на CUDA будет предпринята попытка использовать foreach вместо реализации с циклом for, поскольку обычно она работает значительно быстрее. Обратите внимание, что реализация foreach использует примерно на sizeof(params) больше пиковой памяти, чем версия с циклом for, поскольку промежуточные значения представлены списком тензоров, а не одним тензором. Если памяти недостаточно, обрабатывайте за один раз меньше параметров или установите для этого флага значение False (по умолчанию: None)
  • maximize (bool, необязательно) – максимизировать целевую функцию по отношению к параметрам вместо минимизации (по умолчанию: False)
  • differentiable (bool, необязательно) – выполнять ли autograd через шаг оптимизатора при обучении. В противном случае функция step() выполняется в контексте torch.no_grad(). Значение True может снизить производительность, поэтому оставьте False, если не планируете запускать autograd через этот экземпляр (по умолчанию: False)
  • capturable (bool, необязательно) – безопасно ли захватывать этот экземпляр в граф, будь то графы CUDA или поддержка torch.compile. Тензоры можно захватывать только на поддерживаемых ускорителях. Значение True может снизить производительность при работе без графа, поэтому оставьте False, если не планируете захватывать этот экземпляр в граф (по умолчанию: False)
add_param_group(param_group) [исходный код]

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

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

Параметры:

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

load_state_dict(state_dict) [исходный код]

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

Параметры:

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

Предупреждение

Вызывайте этот метод после инициализации torch.optim.lr_scheduler.LRScheduler, поскольку его предварительный вызов перезапишет загруженные скорости обучения.

Примечание

Имена параметров (если они указаны под ключом “param_names” каждой группы параметров в state_dict()) не влияют на процесс загрузки. Чтобы использовать имена параметров в особых случаях (например, когда параметры в загруженном словаре состояния отличаются от инициализированных в оптимизаторе), следует реализовать пользовательский register_load_state_dict_pre_hook для соответствующего преобразования загруженного словаря. Если param_names присутствуют в загруженном словаре состояния param_groups, они будут сохранены и заменят текущие имена, если таковые имеются, в состоянии оптимизатора. Если в загруженном словаре состояния их нет, param_names оптимизатора останутся без изменений.

Пример

>>> optimizer = ...  # initialized optimizer matching the saved state
>>> scheduler1 = torch.optim.lr_scheduler.LinearLR(
...     optimizer,
...     start_factor=0.1,
...     end_factor=1,
...     total_iters=20,
... )
>>> scheduler2 = torch.optim.lr_scheduler.CosineAnnealingLR(
...     optimizer,
...     T_max=80,
...     eta_min=3e-5,
... )
>>> lr = torch.optim.lr_scheduler.SequentialLR(
...     optimizer,
...     schedulers=[scheduler1, scheduler2],
...     milestones=[20],
... )
>>> lr.load_state_dict(torch.load("./save_seq.pt"))
>>> # now load the optimizer checkpoint after loading the LRScheduler
>>> optimizer.load_state_dict(torch.load("./save_optim.pt"))
register_load_state_dict_post_hook(hook, prepend=False) [исходный код]

Регистрирует пост-хук load_state_dict, который будет вызван после вызова load_state_dict(). Он должен иметь следующую сигнатуру:

hook(optimizer) -> None

Аргумент optimizer — это используемый экземпляр оптимизатора.

Хук будет вызван с аргументом self после вызова load_state_dict для self. Зарегистрированный хук можно использовать для постобработки после того, как load_state_dict загрузил state_dict.

Параметры:
  • hook (Callable) – определённый пользователем хук для регистрации.
  • prepend (bool) – если True, указанный пост-hook будет вызван до всех уже зарегистрированных постхуков для load_state_dict. В противном случае указанный hook будет вызван после всех уже зарегистрированных постхуков. (по умолчанию: False)
Возвращает:

дескриптор, который можно использовать для удаления добавленного хука вызовом handle.remove()

Тип возвращаемого значения:

torch.utils.hooks.RemovableHandle

register_load_state_dict_pre_hook(hook, prepend=False) [исходный код]

Регистрирует предхук load_state_dict, который будет вызван до вызова load_state_dict(). Он должен иметь следующую сигнатуру:

hook(optimizer, state_dict) -> state_dict or None

Аргумент optimizer — это используемый экземпляр оптимизатора, а аргумент state_dict — поверхностная копия state_dict, переданного пользователем в load_state_dict. Хук может изменить state_dict на месте или, при необходимости, вернуть новый. Если возвращён state_dict, он будет загружен в оптимизатор.

Хук будет вызван с аргументами self и state_dict до вызова load_state_dict для self. Зарегистрированный хук можно использовать для предварительной обработки перед вызовом load_state_dict.

Параметры:
  • hook (Callable) – определённый пользователем хук для регистрации.
  • prepend (bool) – если True, указанный пред-hook будет вызван до всех уже зарегистрированных предхуков для load_state_dict. В противном случае указанный hook будет вызван после всех уже зарегистрированных предхуков. (по умолчанию: False)
Возвращает:

дескриптор, который можно использовать для удаления добавленного хука вызовом handle.remove()

Тип возвращаемого значения:

torch.utils.hooks.RemovableHandle

register_state_dict_post_hook(hook, prepend=False) [исходный код]

Регистрирует пост-хук словаря состояния, который будет вызван после вызова state_dict().

Он должен иметь следующую сигнатуру:

hook(optimizer, state_dict) -> state_dict or None

Хук будет вызван с аргументами self и state_dict после создания state_dict для self. Хук может изменить state_dict на месте или, при необходимости, вернуть новый. Зарегистрированный хук можно использовать для постобработки state_dict перед его возвратом.

Параметры:
  • hook (Callable) – определённый пользователем хук для регистрации.
  • prepend (bool) – если True, указанный пост-hook будет вызван до всех уже зарегистрированных постхуков для state_dict. В противном случае указанный hook будет вызван после всех уже зарегистрированных постхуков. (по умолчанию: False)
Возвращает:

дескриптор, который можно использовать для удаления добавленного хука вызовом handle.remove()

Тип возвращаемого значения:

torch.utils.hooks.RemovableHandle

register_state_dict_pre_hook(hook, prepend=False) [исходный код]

Регистрирует предхук словаря состояния, который будет вызван до вызова state_dict().

Он должен иметь следующую сигнатуру:

hook(optimizer) -> None

Аргумент optimizer — это используемый экземпляр оптимизатора. Хук будет вызван с аргументом self до вызова state_dict для self. Зарегистрированный хук можно использовать для предварительной обработки перед вызовом state_dict.

Параметры:
  • hook (Callable) – определённый пользователем хук для регистрации.
  • prepend (bool) – если True, указанный пред-hook будет вызван до всех уже зарегистрированных предхуков для state_dict. В противном случае указанный hook будет вызван после всех уже зарегистрированных предхуков. (по умолчанию: False)
Возвращает:

дескриптор, который можно использовать для удаления добавленного хука вызовом handle.remove()

Тип возвращаемого значения:

torch.utils.hooks.RemovableHandle

register_step_post_hook(hook) [исходный код]

Регистрирует пост-хук шага оптимизатора, который будет вызван после шага оптимизатора.

Он должен иметь следующую сигнатуру:

hook(optimizer, args, kwargs) -> None

Аргумент optimizer — это используемый экземпляр оптимизатора.

Параметры:

hook (Callable) – определённый пользователем хук для регистрации.

Возвращает:

дескриптор, который можно использовать для удаления добавленного хука вызовом handle.remove()

Тип возвращаемого значения:

torch.utils.hooks.RemovableHandle

register_step_pre_hook(hook) [исходный код]

Регистрирует предхук шага оптимизатора, который будет вызван до шага оптимизатора.

Он должен иметь следующую сигнатуру:

hook(optimizer, args, kwargs) -> None or modified args and kwargs

Аргумент optimizer — это используемый экземпляр оптимизатора. Если предхук изменяет args и kwargs, преобразованные значения возвращаются в виде кортежа, содержащего новые args и kwargs.

Параметры:

hook (Callable) – определённый пользователем хук для регистрации.

Возвращает:

дескриптор, который можно использовать для удаления добавленного хука вызовом handle.remove()

Тип возвращаемого значения:

torch.utils.hooks.RemovableHandle

state_dict() [исходный код]

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

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

  • state: a Dict holding current optimization state. Its content

    содержимое зависит от класса оптимизатора, но есть общие особенности. Например, состояние сохраняется для каждого параметра, а сам параметр НЕ сохраняется. state — это словарь, сопоставляющий идентификаторы параметров со словарём, содержащим состояние каждого параметра.

  • param_groups: a List containing all parameter groups where each

    группа параметров представляет собой словарь. Каждая группа параметров содержит метаданные, относящиеся к оптимизатору, например скорость обучения и затухание весов, а также список идентификаторов параметров группы. Если группа параметров инициализирована с помощью named_parameters(), имена также будут сохранены в словаре состояния.

ПРИМЕЧАНИЕ: Идентификаторы параметров могут выглядеть как индексы, но это просто идентификаторы, связывающие состояние с param_group. При загрузке из state_dict оптимизатор сопоставляет params param_group (целочисленные идентификаторы) и param_groups оптимизатора (фактические nn.Parameter s), чтобы связать состояние БЕЗ дополнительной проверки.

Возвращаемый словарь состояния может выглядеть примерно так:

{
    'state': {
        0: {'momentum_buffer': tensor(...), ...},
        1: {'momentum_buffer': tensor(...), ...},
        2: {'momentum_buffer': tensor(...), ...},
        3: {'momentum_buffer': tensor(...), ...}
    },
    'param_groups': [
        {
            'lr': 0.01,
            'weight_decay': 0,
            ...
            'params': [0]
            'param_names' ['param0']  (optional)
        },
        {
            'lr': 0.001,
            'weight_decay': 0.5,
            ...
            'params': [1, 2, 3]
            'param_names': ['param1', 'layer.weight', 'layer.bias'] (optional)
        }
    ]
}
Тип возвращаемого значения:

dict[str, Any]

step(closure=None) [исходный код]

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

Параметры:

closure (Callable, необязательно) – замыкание, повторно вычисляющее модель и возвращающее значение функции потерь.

zero_grad(set_to_none=True) [исходный код]

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

Параметры:

set_to_none (bool, необязательно) –

Вместо установки нуля присваивает градиентам значение None. По умолчанию: True

Как правило, это уменьшает использование памяти и может немного повысить производительность. Однако такое поведение имеет некоторые отличия. Например:

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

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

Spec-Zone.ru

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