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, основанный на бесконечной норме).
Дополнительные сведения об алгоритме см. в статье 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)[исходный код] -
Добавляет группу параметров в
Optimizersparam_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 оптимизатор сопоставляет
paramsparam_group (целочисленные идентификаторы) иparam_groupsоптимизатора (фактическиеnn.Parameters), чтобы связать состояние БЕЗ дополнительной проверки.Возвращаемый словарь состояния может выглядеть примерно так:
{ '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) } ] } -
-
step(closure=None)[исходный код] -
Выполняет один шаг оптимизации.
- Параметры:
-
closure (Callable, необязательно) – замыкание, повторно вычисляющее модель и возвращающее значение функции потерь.
-
zero_grad(set_to_none=True)[исходный код] -
Сбрасывает градиенты всех оптимизируемых
torch.Tensors.- Параметры:
-
set_to_none (bool, необязательно) –
Вместо установки нуля присваивает градиентам значение None. По умолчанию:
TrueКак правило, это уменьшает использование памяти и может немного повысить производительность. Однако такое поведение имеет некоторые отличия. Например:
- Если пользователь пытается получить доступ к градиенту и выполнить над ним операции вручную, атрибут None и тензор, заполненный нулями, ведут себя по-разному.
- Если пользователь вызывает
zero_grad(set_to_none=True), а затем выполняет обратное распространение, для.grads гарантированно будет установлено значение None, если они не получили градиент. -
Оптимизаторы
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