Adadelta
-
class torch.optim.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06, weight_decay=0, foreach=None, *, capturable=False, maximize=False, differentiable=False)[исходный код] -
Реализует алгоритм Adadelta.
Дополнительные сведения об алгоритме см. в статье ADADELTA: метод адаптивной скорости обучения.
- Параметры:
-
- params (iterable) – итерируемый объект параметров или именованных параметров для оптимизации либо итерируемый объект словарей, задающих группы параметров. При использовании именованных параметров все параметры во всех группах должны иметь имена
- lr (float, Tensor, необязательно) – коэффициент, масштабируемый по delta перед применением к параметрам (по умолчанию: 1.0)
-
rho (float, необязательно) – коэффициент, используемый для вычисления скользящего среднего квадратов градиентов (по умолчанию: 0.9). Более высокое значение
rhoприведет к более медленному усреднению, что может помочь предотвратить колебания в процессе обучения. - eps (float, необязательно) – слагаемое, добавляемое к знаменателю для повышения численной устойчивости (по умолчанию: 1e-6).
- weight_decay (float, необязательно) – затухание весов (штраф L2) (по умолчанию: 0)
- foreach (bool, необязательно) – использовать ли реализацию оптимизатора foreach. Если пользователь не указал значение (то есть foreach равен None), мы попытаемся использовать foreach вместо реализации с циклом for на CUDA, поскольку обычно она значительно производительнее. Обратите внимание: из-за промежуточных результатов в виде списка тензоров, а не одного тензора, реализация foreach использует примерно на sizeof(params) больше пиковой памяти, чем версия с циклом for. Если памяти недостаточно, обрабатывайте за один раз меньше параметров в оптимизаторе или установите для этого флага значение False (по умолчанию: None)
- capturable (bool, необязательно) – безопасно ли захватывать этот экземпляр в граф, будь то графы CUDA или поддержка torch.compile. Тензоры можно захватывать только на поддерживаемых ускорителях. Передача True может ухудшить производительность без захвата графа, поэтому, если вы не собираетесь захватывать граф для этого экземпляра, оставьте значение False (по умолчанию: False)
- maximize (bool, необязательно) – максимизировать целевой функционал относительно params вместо минимизации (по умолчанию: False)
- differentiable (bool, необязательно) – следует ли выполнять autograd через шаг оптимизатора во время обучения. В противном случае функция step() выполняется в контексте torch.no_grad(). Установка значения True может снизить производительность, поэтому оставьте False, если не собираетесь выполнять autograd через этот экземпляр (по умолчанию: 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_namesparam_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)[исходный код] -
Регистрирует post-hook для load_state_dict, который будет вызван после вызова
load_state_dict(). Он должен иметь следующую сигнатуру:hook(optimizer) -> None
Аргумент
optimizer— используемый экземпляр оптимизатора.После вызова
load_state_dictдляselfхук будет вызван с аргументомself. Зарегистрированный хук можно использовать для постобработки после того, какload_state_dictзагрузилstate_dict.- Параметры:
-
- hook (Callable) – пользовательский хук для регистрации.
-
prepend (bool) – если True, предоставленный post-
hookбудет вызван до всех уже зарегистрированных post-hook вload_state_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных post-hook. (по умолчанию: False)
- Возвращает:
-
дескриптор, который можно использовать для удаления добавленного хука вызовом
handle.remove() - Тип возвращаемого значения:
-
torch.utils.hooks.RemovableHandle
-
register_load_state_dict_pre_hook(hook, prepend=False)[исходный код] -
Регистрирует pre-hook для 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, он будет загружен в оптимизатор.Перед вызовом
load_state_dictдляselfхук будет вызван с аргументамиselfиstate_dict. Зарегистрированный хук можно использовать для предварительной обработки перед вызовомload_state_dict.- Параметры:
-
- hook (Callable) – пользовательский хук для регистрации.
-
prepend (bool) – если True, предоставленный pre-
hookбудет вызван до всех уже зарегистрированных pre-hook вload_state_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных pre-hook. (по умолчанию: False)
- Возвращает:
-
дескриптор, который можно использовать для удаления добавленного хука вызовом
handle.remove() - Тип возвращаемого значения:
-
torch.utils.hooks.RemovableHandle
-
register_state_dict_post_hook(hook, prepend=False)[исходный код] -
Регистрирует post-hook для словаря состояния, который будет вызван после вызова
state_dict().Он должен иметь следующую сигнатуру:
hook(optimizer, state_dict) -> state_dict or None
После создания
state_dictдляselfхук будет вызван с аргументамиselfиstate_dict. Хук может изменить state_dict на месте или, при необходимости, вернуть новый. Зарегистрированный хук можно использовать для постобработкиstate_dictперед его возвратом.- Параметры:
-
- hook (Callable) – пользовательский хук для регистрации.
-
prepend (bool) – если True, предоставленный post-
hookбудет вызван до всех уже зарегистрированных post-hook вstate_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных post-hook. (по умолчанию: False)
- Возвращает:
-
дескриптор, который можно использовать для удаления добавленного хука вызовом
handle.remove() - Тип возвращаемого значения:
-
torch.utils.hooks.RemovableHandle
-
register_state_dict_pre_hook(hook, prepend=False)[исходный код] -
Регистрирует pre-hook для словаря состояния, который будет вызван перед вызовом
state_dict().Он должен иметь следующую сигнатуру:
hook(optimizer) -> None
Аргумент
optimizer— используемый экземпляр оптимизатора. Перед вызовомstate_dictдляselfхук будет вызван с аргументомself. Зарегистрированный хук можно использовать для предварительной обработки перед вызовомstate_dict.- Параметры:
-
- hook (Callable) – пользовательский хук для регистрации.
-
prepend (bool) – если True, предоставленный pre-
hookбудет вызван до всех уже зарегистрированных pre-hook вstate_dict. В противном случае предоставленныйhookбудет вызван после всех уже зарегистрированных pre-hook. (по умолчанию: False)
- Возвращает:
-
дескриптор, который можно использовать для удаления добавленного хука вызовом
handle.remove() - Тип возвращаемого значения:
-
torch.utils.hooks.RemovableHandle
-
register_step_post_hook(hook)[исходный код] -
Регистрирует post-hook шага оптимизатора, который будет вызван после шага оптимизатора.
Он должен иметь следующую сигнатуру:
hook(optimizer, args, kwargs) -> None
Аргумент
optimizer— используемый экземпляр оптимизатора.- Параметры:
-
hook (Callable) – пользовательский хук для регистрации.
- Возвращает:
-
дескриптор, который можно использовать для удаления добавленного хука вызовом
handle.remove() - Тип возвращаемого значения:
-
torch.utils.hooks.RemovableHandle
-
register_step_pre_hook(hook)[исходный код] -
Регистрирует pre-hook шага оптимизатора, который будет вызван перед шагом оптимизатора.
Он должен иметь следующую сигнатуру:
hook(optimizer, args, kwargs) -> None or modified args and kwargs
Аргумент
optimizer— используемый экземпляр оптимизатора. Если pre-hook изменяет 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 -
группа параметров представляет собой словарь. Каждая группа параметров содержит метаданные, относящиеся к оптимизатору, например скорость обучения и затухание весов, а также список идентификаторов параметров, входящих в группу. Если группа параметров была инициализирована с помощью
named_parameters(), имена также будут сохранены в словаре состояния.
-
ПРИМЕЧАНИЕ: идентификаторы параметров могут выглядеть как индексы, но это всего лишь идентификаторы, связывающие состояние с param_group. При загрузке из state_dict оптимизатор объединяет param_group
params(целочисленные идентификаторы) и оптимизатор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)с последующим обратным проходом, для.gradгарантированно будет установлено значение 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.Adadelta.html