RAdam
-
class torch.optim.RAdam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, *, foreach=None, differentiable=False)[source] -
Реализует алгоритм RAdam.
Для получения дополнительной информации об алгоритме мы обращаем вас к On the variance of the adaptive learning rate and beyond.
Эта реализация использует ту же реализацию weight_decay, что и Adam (где weight_decay применяется к градиенту), а не ту, что используется в AdamW (где weight_decay применяется к обновлению). Это отличается от реализации автора.
- Параметры
-
- params (iterable) – iterable параметров для оптимизации или словари, определяющие группы параметров
- lr (float, необязательно) – скорость обучения (по умолчанию: 1e-3)
- betas (Tuple[float, float], необязательно) – коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата (по умолчанию: (0.9, 0.999))
- eps (float, необязательно) – слагаемое, добавляемое к знаменателю для повышения числовой устойчивости (по умолчанию: 1e-8)
- weight_decay (float, необязательно) – разложение по весам (штраф L2) (по умолчанию: 0)
- foreach (bool, необязательно) – используется ли реализация оптимизатора foreach. Если пользователь не указывает (т.е. foreach равно None), мы будем пытаться использовать foreach над реализацией цикла for на CUDA, так как она обычно значительно производительнее. Обратите внимание, что реализация foreach использует примерно sizeof(params) больше пиковой памяти, чем версия цикла for, из-за того, что промежуточные значения являются списком тензоров, а не просто одним тензором. Если память ограничена, передавайте меньше параметров оптимизатору за раз или установите этот флаг в False (по умолчанию: None)
- differentiable (bool, необязательно) – нужно ли производить autograd при шаге оптимизатора в процессе обучения. В противном случае функция step() выполняется в контексте torch.no_grad(). Установка в True может ухудшить производительность, поэтому оставьте False, если вы не планируете запускать autograd через этот экземпляр (по умолчанию: False)
-
add_param_group(param_group) -
Добавить группу параметров в
Optimizerыparam_groups.Это может быть полезно при донастройке предварительно обученной сети, так как замороженные слои можно сделать обучаемыми и добавить в
Optimizerпо мере прогресса обучения.- Параметры
-
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), за которым следует обратный проход,.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.RAdam.html