Adagrad
-
class torch.optim.Adagrad(params, lr=0.01, lr_decay=0, weight_decay=0, initial_accumulator_value=0, eps=1e-10, foreach=None, *, maximize=False, differentiable=False)[source] -
Реализует алгоритм Adagrad.
Дополнительные сведения об алгоритме можно найти в Adaptive Subgradient Methods for Online Learning and Stochastic Optimization.
- Параметры
-
- params (iterable) – перебираемый список параметров для оптимизации или словари, определяющие группы параметров
- lr (float, необязательно) – скорость обучения (по умолчанию: 1e-2)
- lr_decay (float, необязательно) – уменьшение скорости обучения (по умолчанию: 0)
- weight_decay (float, необязательно) – коэффициент затухания веса (штраф L2) (по умолчанию: 0)
- eps (float, необязательно) – слагаемое в знаменателе для улучшения числовой устойчивости (по умолчанию: 1e-10)
- foreach (bool, необязательно) – использовать ли foreach-реализацию оптимизатора. Если пользователь не указывает (foreach равно None), мы будем пытаться использовать foreach на CUDA, так как это обычно значительно производительнее. Обратите внимание, что foreach-реализация использует ~ sizeof(params) больше пиковой памяти, чем for-loop-реализация, из-за того, что промежуточные результаты представляют собой список тензоров, а не просто один тензор. Если память ограничена, передавайте меньше параметров в оптимизатор или установите этот флаг в False (по умолчанию: None)
- maximize (bool, необязательно) – максимизировать параметры на основе целевой функции вместо минимизации (по умолчанию: False)
- differentiable (bool, необязательно) – производить ли вычисления по автографу во время шага оптимизации при обучении. В противном случае функция 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().
-
register_load_state_dict_post_hook(hook, prepend=False) -
Регистрирует пост-хук для метода
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(), который вызывается до его выполнения. У него должна быть следующая сигнатура: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. В противном случае, предоставленный пре-хук будет вызван после всех уже зарегистрированных пре-хуков. (по умолчанию: False)
- Возвращает
-
дескриптор, который можно использовать для удаления добавленного хука, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
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перед его возвращением.- Параметры
-
- hook (Callable) – Пользовательский хук, который нужно зарегистрировать.
-
prepend (bool) – Если True, предоставленный пост-хук будет вызван до всех уже зарегистрированных пост-хуков для
state_dict. В противном случае, предоставленный пост-хук будет вызван после всех уже зарегистрированных пост-хуков. (по умолчанию: False)
- Возвращает
-
дескриптор, который можно использовать для удаления добавленного хука, вызвав
handle.remove() - Тип возвращаемого значения
-
torch.utils.hooks.RemoveableHandle
-
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, предоставленный пре-хук будет вызван до всех уже зарегистрированных пре-хуков для
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. При загрузке из словаря состояний оптимизатор свяжет 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] }, { '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.Adagrad.html