Rprop
-
class torch.optim.Rprop(params, lr=0.01, etas=(0.5, 1.2), step_sizes=(1e-06, 50), *, foreach=None, maximize=False, differentiable=False)[source] -
Реализует алгоритм обратного распространения ошибки с резистивным управлением.
Для получения дополнительной информации об алгоритме обратитесь к статье A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm.
- Параметры
-
- params (iterable) – iterable параметров для оптимизации или словари, определяющие группы параметров
- lr (float, необязательно) – скорость обучения (по умолчанию: 1e-2)
- etas (Tuple[float, float], необязательно) – пара (etaminus, etaplus), которые являются множителями увеличения и уменьшения (по умолчанию: (0.5, 1.2))
- step_sizes (Tuple[float, float], необязательно) – пара минимального и максимального допустимого размера шага (по умолчанию: (1e-6, 50))
- foreach (bool, необязательно) – используется ли реализация оптимизатора foreach. Если пользователь не укажет (так foreach равен None), мы попробуем использовать foreach над реализацией цикла for на CUDA, так как она обычно значительно производительнее. Обратите внимание, что реализация foreach использует ~ sizeof(params) больше пиковой памяти, чем версия цикла for, из-за того, что промежуточные значения являются списком тензоров, а не просто одним тензором. Если память ограничена, передавайте меньше параметров через оптимизатор за раз или установите этот флаг в False (по умолчанию: None)
- maximize (bool, необязательно) – максимизировать параметры по объективной функции вместо минимизации (по умолчанию: False)
- differentiable (bool, необязательно) – должен ли происходить автоградиент через шаг оптимизатора при обучении. В противном случае функция step() выполняется в контексте torch.no_grad(). Установка в True может ухудшить производительность, поэтому оставьте ее False, если вы не планируете запускать автоградиент через этот экземпляр (по умолчанию: 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] } ] } -
-
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)и за ним следует обратное распространение, градиенты для параметров, которые не получили градиент, гарантированно будут 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.Rprop.html