Adadelta
-
class torch.optim.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06, weight_decay=0, foreach=None, *, maximize=False, differentiable=False)[source] -
Реализует алгоритм Adadelta.
Для более подробной информации об алгоритме мы обращаемся к ADADELTA: An Adaptive Learning Rate Method.
- Параметры
-
- params (iterable) – итерируемый список параметров для оптимизации или словари, определяющие группы параметров
- rho (float, необязательно) – коэффициент, используемый для вычисления скользящего среднего квадратов градиентов (по умолчанию: 0.9)
- eps (float, необязательно) – член, добавляемый в знаменатель для повышения числовой устойчивости (по умолчанию: 1e-6)
- lr (float, необязательно) – коэффициент, масштабирующий delta перед применением к параметрам (по умолчанию: 1.0)
- weight_decay (float, необязательно) – weight decay (L2 penalty) (по умолчанию: 0)
- foreach (bool, необязательно) – используется ли реализация foreach оптимизатора. Если пользователь не указывает (т.е. foreach равно None), мы будем пытаться использовать foreach над реализацией for-цикла на CUDA, так как она обычно значительно производительнее. Обратите внимание, что реализация foreach использует ~ sizeof(params) больше пиковой памяти, чем версия for-цикла, из-за того, что промежуточные значения являются списком тензоров, а не просто одним тензором. Если память ограничена, передавайте меньшее количество параметров через оптимизатор или установите этот флаг в False (по умолчанию: None)
- maximize (bool, необязательно) – максимизировать параметры на основе цели, а не минимизировать (по умолчанию: False)
- differentiable (bool, необязательно) – должна ли выполняться autograd через шаг оптимизатора во время обучения. В противном случае функция step() выполняется в контексте torch.no_grad(). Установка в True может ухудшить производительность, поэтому оставьте False, если вы не планируете выполнять autograd через этот экземпляр (по умолчанию: False)
-
add_param_group(param_group) -
Добавляет группу параметров к оптимизаторам.
Это может быть полезно при донастройке предварительно обученной сети, поскольку замороженные слои могут быть сделаны обучаемыми и добавлены к оптимизатору по мере прогресса обучения.
- Параметры
-
param_group (dict) – Указывает, какие тензоры должны быть оптимизированы вместе со специфичными для группы параметрами оптимизации.
-
load_state_dict(state_dict) -
Загружает состояние оптимизатора.
- Параметры
-
state_dict (dict) – состояние оптимизатора. Должно быть объектом, возвращенным в результате вызова
state_dict().
-
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, предоставленный пост-обработчик будет запущен до всех уже зарегистрированных пост-обработчиков для
load_state_dict. В противном случае предоставленный пост-обработчик будет запущен после всех уже зарегистрированных пост-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который может использоваться для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
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, предоставленный пре-обработчик будет запущен до всех уже зарегистрированных пре-обработчиков для
load_state_dict. В противном случае предоставленный пре-обработчик будет запущен после всех уже зарегистрированных пре-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который может использоваться для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
register_state_dict_post_hook(hook, prepend=False) -
Регистрирует пост-обработчик state_dict, который будет вызван после вызова
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, предоставленный пост-обработчик будет запущен до всех уже зарегистрированных пост-обработчиков для
state_dict. В противном случае предоставленный пост-обработчик будет запущен после всех уже зарегистрированных пост-обработчиков. (по умолчанию: False)
- Возвращает
-
дескриптор, который может использоваться для удаления добавленного обработчика, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
register_state_dict_pre_hook(hook, prepend=False) -
Регистрирует пре-обработчик state_dict, который будет вызван до вызова
state_dict(). Он должен иметь следующий вид:hook(optimizer) -> None
Аргумент
optimizer— это экземпляр оптимизатора, используемый в данный момент. Обработчик будет вызван с аргументомselfдо вызоваstate_dictдляself. Зарегистрированный обработчик можно использовать для выполнения предварительной обработки перед вызовомstate_dict.- Параметры
-
- hook (Callable) – Пользовательский обработчик для регистрации.
-
prepend (bool) – Если True, предоставленный пре-обработчик будет запущен до всех уже зарегистрированных пре-обработчиков для
state_dict. В противном случае предоставленный пре-обработчик будет запущен после всех уже зарегистрированных пре-обработчиков. (по умолчанию: 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_dict может выглядеть примерно так:
{ '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)за которым следует обратное распространение, градиенты для параметров, которые не получили градиент, гарантированно будут 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.Adadelta.html