Spec-Zone.ru › PyTorch 2

ASGD

class torch.optim.ASGD(params, lr=0.01, lambd=0.0001, alpha=0.75, t0=1000000.0, weight_decay=0, foreach=None, maximize=False, differentiable=False) [source]

Реализует усреднённый стохастический градиентный спуск.

Он был предложен в Ускорение стохастического приближения с помощью усреднения.

Параметры
  • params (iterable) – итерируемый набор параметров для оптимизации или словари, определяющие группы параметров
  • lr (float, необязательно) – скорость обучения (по умолчанию: 1e-2)
  • lambd (float, необязательно) – член затухания (по умолчанию: 1e-4)
  • alpha (float, необязательно) – показатель степени для обновления eta (по умолчанию: 0.75)
  • t0 (float, необязательно) – точка, с которой начинается усреднение (по умолчанию: 1e6)
  • weight_decay (float, необязательно) – сжатие весов (штраф L2) (по умолчанию: 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)

Добавляет группу параметров в Optimizer.

Это может быть полезно при доработке предварительно обученной сети, так как замороженные слои можно сделать обучаемыми и добавить их в 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': {
        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]
        }
    ]
}
Тип возвращаемого значения

Dict[str, Any]

step(closure=None) [source]

Выполняет один шаг оптимизации.

Параметры

closure (Callable, необязательно) — замыкание, которое переоценивает модель и возвращает потерю.

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.ASGD.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API