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)[source] -
Реализует алгоритм Adamax (вариант Adam, основанный на бесконечной норме).
Для получения дополнительной информации об алгоритме см. Adam: A Method for Stochastic Optimization.
- Параметры
-
- params (iterable) – итерируемый объект параметров для оптимизации или словари, определяющие группы параметров
- lr (float, необязательно) – скорость обучения (по умолчанию: 2e-3)
- betas (Tuple[float, float], необязательно) – коэффициенты, используемые для вычисления текущих средних значений градиента и его квадрата
- eps (float, необязательно) – значение, добавляемое к знаменателю для повышения числовой устойчивости (по умолчанию: 1e-8)
- weight_decay (float, необязательно) – сдугшение весов (штраф L2) (по умолчанию: 0)
- foreach (bool, необязательно) – используется ли реализация оптимизатора foreach. Если пользователь не указывает (так foreach равен None), мы попробуем использовать foreach над реализацией for-цикла на CUDA, поскольку она обычно значительно производительнее. Обратите внимание, что реализация foreach использует ~ sizeof(params) больше пиковой памяти, чем версия for-цикла, из-за того, что промежуточные значения являются списком тензоров, а не просто одним тензором. Если память ограничена, передавайте меньше параметров через оптимизатор или установите этот флаг в False (по умолчанию: None)
- maximize (bool, необязательно) – максимизировать параметры на основе целевой функции вместо минимизации (по умолчанию: False)
- differentiable (bool, необязательно) – должен ли происходить автоградиент через шаг оптимизатора при обучении. В противном случае функция step() выполняется в контексте torch.no_grad(). Установка в True может ухудшить производительность, поэтому оставьте ее False, если вы не планируете выполнять автоградиент через этот экземпляр (по умолчанию: False)
-
add_param_group(param_group) -
Добавить группу параметров в оптимизаторы
Optimizer.Это может быть полезно при донастройке предварительно обученной сети, так как замороженные слои можно сделать обучаемыми и добавить к оптимизатору по мере продвижения обучения.
- Параметры
-
param_group (dict) – Указывает, какие тензоры следует оптимизировать вместе со специфическими для группы параметрами оптимизации.
-
load_state_dict(state_dict) -
Загружает состояние оптимизатора.
- Параметры
-
state_dict (dict) – состояние оптимизатора. Должен быть объектом, возвращенным из вызова
state_dict().
-
register_load_state_dict_post_hook(hook, prepend=False) -
Зарегистрировать обработчик post-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, предоставленный пост-обработчик будет вызван перед всеми уже зарегистрированными пост-обработчиками на
load_state_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных пост-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который можно использовать для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
register_load_state_dict_pre_hook(hook, prepend=False) -
Зарегистрировать обработчик pre-load_state_dict, который будет вызван перед вызовом
load_state_dict(). Он должен иметь следующий вид:hook(optimizer, state_dict) -> state_dict or None
Аргумент
optimizer— это экземпляр оптимизатора, используемый, а аргументstate_dict— это неглубокая копияstate_dictзначения, переданного пользователем вload_state_dict. Обработчик может изменять словарь состояния на месте или, по желанию, возвращать новый словарь. Если возвращается словарь состояния, он будет использован для загрузки в оптимизатор.Обработчик будет вызван с аргументом
selfиstate_dictперед вызовомload_state_dictнаself. Зарегистрированный обработчик может использоваться для выполнения пред-обработки перед выполнением вызоваload_state_dict.- Параметры
-
- hook (Callable) – Пользовательский обработчик для регистрации.
-
prepend (bool) – Если True, предоставленный пре-обработчик будет вызван перед всеми уже зарегистрированными пре-обработчиками на
load_state_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных пре-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который можно использовать для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
register_state_dict_post_hook(hook, prepend=False) -
Зарегистрировать обработчик post-state_dict, который будет вызван после вызова
state_dict(). Он должен иметь следующий вид:hook(optimizer, state_dict) -> state_dict or None
Обработчик будет вызван с аргументами
selfиstate_dictпосле генерацииstate_dictдляself. Обработчик может изменять словарь состояния на месте или, по желанию, возвращать новый. Зарегистрированный обработчик можно использовать для выполнения пост-обработки словаря состояния перед его возвратом.- Параметры
-
- hook (Callable) – Пользовательский обработчик для регистрации.
-
prepend (bool) – Если True, предоставленный пост-обработчик будет вызван перед всеми уже зарегистрированными пост-обработчиками на
state_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных пост-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который можно использовать для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
register_state_dict_pre_hook(hook, prepend=False) -
Зарегистрировать обработчик pre-state_dict, который будет вызван перед вызовом
state_dict(). Он должен иметь следующий вид:hook(optimizer) -> None
Аргумент
optimizer— это экземпляр оптимизатора, который используется. Обработчик будет вызван с аргументомselfперед вызовомstate_dictнаself. Зарегистрированный обработчик можно использовать для выполнения предварительной обработки перед вызовомstate_dict.- Параметры
-
- hook (Callable) – Пользовательский обработчик для регистрации.
-
prepend (bool) – Если True, предоставленный пре-обработчик будет вызван перед всеми уже зарегистрированными пре-обработчиками на
state_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных пре-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который можно использовать для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
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 изменяются пре-обработчиком, то преобразованные значения возвращаются в виде кортежа, содержащего новые значения new_args и new_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 -
группа параметров — это словарь. Каждая группа параметров содержит метаданные, специфичные для оптимизатора, такие как скорость обучения и затухание весов, а также список идентификаторов параметров параметров в группе.
-
ПРИМЕЧАНИЕ: Идентификаторы параметров могут выглядеть как индексы, но они представляют собой просто идентификаторы, связывающие состояние с param_group. При загрузке из state_dict оптимизатор объединит param_group
params(целые идентификаторы) и оптимизаторparam_groups(фактическиеnn.Parameterзначения) для сопоставления состояния БЕЗ дополнительной проверки.Возвращаемый словарь состояния может выглядеть примерно так:
{ '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] }, { 'lr': 0.001, 'weight_decay': 0.5, ... 'params': [1, 2, 3] } ] } -
-
step(closure=None)[source] -
Выполняет один шаг оптимизации.
- Параметры
-
closure (Callable, optional) – Закрытая функция, которая повторно вычисляет модель и возвращает потерю.
-
-
zero_grad(set_to_none=True) -
Сбрасывает градиенты всех оптимизированных
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/2.1/generated/torch.optim.Adamax.html