timm documentation

Оптимизация

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Оптимизация

На этой странице представлена справочная документация по API оптимизаторов, включённых в timm, а также обзор того, как они выбираются и настраиваются через фабрику оптимизаторов.

Использование

Оптимизаторы создаются по имени с помощью create_optimizer_v2. Получив модель, фабрика формирует группы параметров (исключения для weight decay, необязательное затухание скорости обучения по слоям), прежде чем создать оптимизатор. Специфические для оптимизатора аргументы передаются как именованные аргументы.

import timm
from timm.optim import create_optimizer_v2, list_optimizers

model = timm.create_model('vit_base_patch16_224')

# AdamW. 1D params (biases, norm scales) and params in model.no_weight_decay() are excluded from weight decay.
optimizer = create_optimizer_v2(model, opt='adamw', lr=1e-3, weight_decay=0.05)

# Layer-wise learning rate decay (fine-tuning), per-layer lr scales from the model's group_matcher().
optimizer = create_optimizer_v2(model, opt='adamw', lr=1e-3, weight_decay=0.05, layer_decay=0.75)

# Optimizer specific arguments are passed through.
optimizer = create_optimizer_v2(model, opt='lamb', lr=5e-3, weight_decay=0.02, trust_clip=True)

# A list of params or param groups can be passed instead of a model, weight decay grouping is then up to the caller.
optimizer = create_optimizer_v2(model.parameters(), opt='sgd', lr=0.1, momentum=0.9)

# All registered names, optionally with a description.
print(list_optimizers(with_description=True))

Скрипт обучения (train.py) предоставляет тот же функционал через эти флаги:

  • --opt выбирает оптимизатор.
  • --lr задает скорость обучения.
  • --weight-decay задаёт весовое затухание.
  • --momentum задаёт импульс.
  • --opt-eps задает значение эпсилон (eps).
  • --opt-betas задаёт коэффициенты бета (betas).
  • --layer-decay задаёт послойное затухание скорости обучения.
  • --opt-kwargs key=value ... передаёт любые другие аргументы оптимизатора.

Соглашения о наименовании

Зарегистрированные имена пишутся в нижнем регистре и состоят из базового имени оптимизатора и модификаторов:

ИзменитьЗначениеПримеры
префикс cОсторожный вариант: обновление маскируется там, где его знак не совпадает с градиентом (Cautious Optimizers)cadamw, clion, cmars, cadopt
суффикс wРазвязанное (в стиле AdamW) затухание весов для оптимизаторов, по умолчанию использующих связанное L2-затуханиеsgdw, lambw, adoptw, novogradw, rmsproptfw
суффикс cСкорректированное затухание весов: затухание масштабируется множителем lr² / max_lr вместо lr (Почему градиенты резко возрастают в конце обучения)adamc, nadamc, sgdc, lionc, adoptc, kronc
Префикс nИмпульс Нестерова (семейства SGD, LARS и Muon)nesterov, nlars, nmuon, nadamuon
префикс lookahead_Оберните оптимизатор в Lookaheadlookahead_adamw
префикс fusedСлиянная реализация NVIDIA Apex (требуется apex)fusedadamw, fusedlamb
префикс bnbреализация bitsandbytes, суффикс 8bit для состояния 8 бит (требуется bitsandbytes)bnbadamw, bnbadamw8bit

Некоторые названия появились раньше принятых соглашений: lambc и larc — это LAMB / LARS с обрезкой отношения доверия (исправленный вариант LAMB с затуханием — lambcd), momentum — это SGD с классическим импульсом, а sgd — SGD с импульсом Нестерова. Реализации legacy в таблице ниже предшествовали их включению в PyTorch.

Семейства оптимизаторов

ИменаРеализацияПримечания
adamw, adam, nadam, radam, radamw, adamax, adadelta, adagrad, rmsprop, sgd, momentum, nesterovtorch.optim
adamwlegacy, adamc, cadamw, cadamcAdamWLegacyAdamW с осторожностью, исправленное затухание, обрезание обновлений, capturable
nadamw, nadamc, cnadamw, cnadamcNAdamWAdamW с импульсом Нестерова (форма алгоритмической эффективности MLCommons)
adopt, adoptw, adoptc, cadopt, cadoptw, cadoptcAdoptВариант Adam, сходящийся для любого β2
adan, adanw, cadan, cadanwAdanАдаптивный импульс Нестерова
adabelief, radabeliefAdaBeliefradabelief добавляет коррекцию в стиле RAdam
adafactor, cadafactorAdafactorfairseq Adafactor, относительный размер шага, когда lr=None
adafactorbv, adafactorbvc, cadafactorbv, cadafactorbvcAdafactorBigVisionBig Vision Adafactor, факторизованные моменты второго порядка, импульс с низкой точностью, обрезание обновлений
adamp, cadamp, sgdp, csgdpAdamP, SGDPПроекция обновления для масштабно-инвариантных весов
adahessianAdahessianВторого порядка, требует замыкание (is_second_order)
kron, kronw, kroncKronPSGD с преобразователем, факторизованным по Кронекеру
lamb, lambc, lambw, lambcw, lambcd, clamb, clambwLambПослойные адаптивные моменты, варианты trust_clip (lambc, lambcw)
laprop, lapropc, clapropLaPropРазделение импульса и адаптивности
lars, larc, nlars, nlarcLarsМасштабирование адаптивной скорости по слоям, варианты trust_clip (larc, nlarc)
lion, lionc, clion, clioncLionЭволюционированный знак импульса
madgrad, madgradwMADGRADДвойное усреднение на основе импульса
mars, cmarsMarsСнижение дисперсии, обновление в стиле AdamW или Lion
muon, nmuon, adamuon, nadamuonMuonОртогонализированный импульс Ньютона-Шульца для весов размерности 2D и выше, резервный режим AdamW / NAdamW для параметров размерности 1D
novograd, novogradw, novogradcNvNovoGradНормализованные моменты по слоям
rmsproptf, rmsproptfw, rmsproptfc, crmsproptfRMSpropTFПорядок операций в TensorFlow и обработка eps, lr, встроенная в буфер импульса
sgdw, nesterovw, sgdc, csgdw, csgdcSGDWSGD с отделённым затуханием весов
nadamlegacy, radamlegacyNAdamLegacy, RAdamLegacyРеференсные реализации, заменённые на torch.optim
fused*, bnb*NVIDIA Apex, bitsandbytesРегистрируется при установке пакета

Часто используемые параметры

Большинство оптимизаторов timm поддерживают набор параметров, выходящий за рамки стандартных lr, weight_decay, betas и eps. Какие именно оптимизаторы принимают какие параметры, можно узнать по сигнатурам классов ниже; фабрика вызывает исключение при передаче неподдерживаемых аргументов.

  • caution применяет маску осторожного обновления, что эквивалентно именам реестра с префиксом c.
  • corrected_weight_decay масштабирует развязанное затухание весов множителем lr² / max_lr вместо lr (имена с суффиксом c), благодаря чему эффективное затухание следует расписанию скорости обучения. max_lr — это скорость обучения, с которой был создан оптимизатор; создавайте его с пиковой скоростью обучения из расписания (как это делает train.py). Значение хранится в каждой группе параметров (max_lr_snapshot) и сохраняется/восстанавливается вместе с состоянием оптимизатора.
  • decoupled_decay (или decoupled) переключает оптимизаторы, по умолчанию использующие связанное L2-затухание, на затухание в стиле AdamW (имена с суффиксом w).
  • foreach выбирает реализацию для нескольких тензоров. По умолчанию (None) она используется на CUDA и других устройствах с ядрами foreach, как в torch.optim, если конфигурация не поддерживает её (тензор lr без capturable или caution в версии PyTorch без требуемой перегрузки _foreach_maximum_). Шаг для нескольких тензоров выполняется в блоках параметров, размер которых подбирается так, чтобы рабочий набор каждого блока помещался в кэш L2 GPU, что быстрее, чем пропускать каждый параметр через память один раз на операцию для больших моделей. Размер блока вычисляется на основе размера кэша L2 устройства (PyTorch >= 2.5), а разбиение на блоки пропускается на устройствах, где получившийся блок был бы меньше 4M элементов. Переменная TIMM_FOREACH_CHUNK_SIZE=<elements> переопределяет размер блока, а 0 отключает разбиение на блоки.
  • capturable (AdamWLegacy, NAdamW, Adopt, Muon) хранит счётчик шагов на устройстве, чтобы шаг можно было захватить в CUDA-графе. Все оптимизаторы принимают lr, заданный как тензор нулевого измерения, который обновляется на месте расписанием, для использования с torch.compile и CUDA-графами.
  • clipping_threshold (AdamWLegacy, NAdamW, AdafactorBigVision) обрезает обновление по его RMS: update / max(1, rms / threshold), где rms — это RMS градиента, нормированного вторым моментом, для каждого тензора (StableAdamW, Adafactor). 1.0, как в статьях. Как и в Adafactor, (развязанное) затухание веса не обрезается, а StableAdamW также масштабирует затухание обрезанной скоростью обучения.
  • maximize максимизирует целевую функцию, а не минимизирует её.

Поддержка параметров с низкой точностью (bfloat16, float16) обеспечивается на всех этапах:

  • AdaBelief, RAdamLegacy and Adafactor хранят своё состояние в float32 для параметров с низкой точностью.
  • AdafactorBigVision хранит свой импульс в пониженной точности (momentum_dtype).
  • Kron имеет отдельные параметры mu_dtype / precond_dtype.

Эти state dtypes сохраняются при вызове load_state_dict (загрузчик по умолчанию в PyTorch приводит state к dtype параметра). Функции step избегают синхронизации с хостом (ветвления Python, зависящие от данных, на тензорах устройства), исключение составляет проверка проекции в AdamP / SGDP.

Группы параметров

При передаче модели create_optimizer_v2 группирует параметры с помощью param_groups_weight_decay (без затухания для 1D-параметров и набора no_weight_decay() модели) или, при установленном layer_decay, с помощью param_groups_layer_decay, который назначает масштаб коэффициента обучения layer_decay ** (num_layers - layer_id) для каждого слоя, используя group_matcher() модели. Модели без group_matcher() используют auto_group_layers, для которого требуется pretrained_cfg['classifier'] модели для выделения головы. Для гибридных оптимизаторов (Muon) аргументы fallback_list и fallback_no_weight_decay направляют параметры в запасной (AdamW) оптимизатор.

API

Фабричные функции

timm.optim.create_optimizer_v2

< >

( model_or_params: typing.Union[torch.nn.Module, torch.optim.optimizer.ParamsT]opt: str = 'sgd'lr: typing.Optional[float] = Noneweight_decay: float = 0.0momentum: float = 0.9foreach: typing.Optional[bool] = Nonefilter_bias_and_bn: bool = Truefallback_list: typing.Collection[str] = ()fallback_no_weight_decay: bool = Falselayer_decay: typing.Optional[float] = Nonelayer_decay_min_scale: float = 0.0layer_decay_no_opt_scale: typing.Optional[float] = Noneparam_group_fn: typing.Optional[typing.Callable[[torch.nn.Module], torch.optim.optimizer.ParamsT]] = None**kwargs: typing.Any )

Параметры

  • model_or_params — модель PyTorch или итерируемый объект параметров/групп параметров. Если предоставлена модель, параметры будут автоматически извлечены и сгруппированы на основе остальных аргументов.
  • opt — Имя создаваемого оптимизатора (например, ‘adam’, ‘adamw’, ‘sgd’). Используйте list_optimizers(), чтобы просмотреть доступные варианты.
  • lr — Learning rate. Если None, будет использовано значение по умолчанию для оптимизатора.
  • weight_decay — Коэффициент затухания весов. Будет использован для создания групп параметров, если model_or_params является моделью.
  • momentum — Коэффициент импульса для оптимизаторов, которые его поддерживают. Используется только в том случае, если выбранный оптимизатор принимает параметр momentum.
  • foreach — Включить/отключить foreach (multi-tensor) реализацию, если она доступна. Если None, будут использоваться значения по умолчанию, специфичные для данного оптимизатора.
  • filter_bias_and_bn — Если True, к параметрам bias и слоёв нормализации (все 1d-параметры) не будет применяться weight decay. Используется только тогда, когда model_or_params является моделью и weight_decay > 0.
  • fallback_list — Коллекция шаблонов имён параметров, для которых следует использовать резервный оптимизатор в гибридных оптимизаторах (например, AdamW для Muon). Поддерживает сопоставление с подстановочными знаками.
  • fallback_no_weight_decay — Если True, параметры из списка no_weight_decay() модели будут использовать резервный оптимизатор для гибридных оптимизаторов (например, AdamW для Muon).
  • layer_decay — Необязательный коэффициент затухания скорости обучения по слоям. Если указан, скорости обучения масштабируются по формуле layer_decay^(max_depth - layer_depth). Используется только в том случае, если model_or_params является моделью.
  • param_group_fn — Необязательная функция для создания пользовательских групп параметров. Если указана, другие параметры группировки параметров будут проигнорированы.
  • **kwargs — Дополнительные аргументы, специфичные для оптимизатора (например, betas для Adam).

Создайте экземпляр оптимизатора через реестр timm.

Создаёт и настраивает оптимизатор с соответствующими группами параметров и параметрами конфигурации. Поддерживает автоматическое создание групп параметров для weight decay и layer-wise learning rates, а также пользовательское группирование параметров.

Примеры:

AdamW из модели, группы параметров создаются автоматически:

optimizer = create_optimizer_v2(model, 'adamw', lr=1e-3)

SGD с импульсом и затуханием весов:

optimizer = create_optimizer_v2(model, 'sgd', lr=0.1, momentum=0.9, weight_decay=1e-4)

Adam с послойным затуханием коэффициента обучения:

optimizer = create_optimizer_v2(model, 'adam', lr=1e-3, layer_decay=0.7)

Пользовательские группы параметров:

def group_fn(model):
    return [
        {'params': model.backbone.parameters(), 'lr': 1e-4},
        {'params': model.head.parameters(), 'lr': 1e-3},
    ]

optimizer = create_optimizer_v2(model, 'sgd', param_group_fn=group_fn)

Примечание: Приоритет обработки групп параметров:

  1. Если указан param_group_fn, он будет использоваться исключительно
  2. Если указан layer_decay, будут созданы послойные группы
  3. Если weight_decay > 0 и filter_bias_and_bn равно True, будут созданы группы weight decay
  4. В противном случае все параметры будут находиться в одной группе

timm.optim.list_optimizers

< >

( filter: typing.Union[str, typing.List[str]] = ''exclude_filters: typing.Optional[typing.List[str]] = Nonewith_description: bool = False ) → If with_description is False

Параметры

  • filter — строка фильтра в стиле wildcards или список строк фильтров (например, ‘adam’ для всех вариантов Adam или [‘adam’, ‘*8bit’] для вариантов Adam и 8-битных оптимизаторов). Пустая строка означает отсутствие фильтрации.
  • exclude_filters — Необязательный список шаблонов с подстановочными знаками для исключения. Например, [’8bit’, ‘fused’] исключит 8-битные и слиянные реализации.
  • with_description — Если True, возвращает кортежи (name, description) вместо одних только имён. Описания дают краткие пояснения характеристик оптимизатора.

Возвращает

Если with_description равно False

Список имён оптимизаторов в виде строк (например, ['adam', 'adamw', ...]) Если with_description равно True: Список кортежей вида (имя, описание) (например, [('adam', 'Adaptive Moment…'), ...])

Список доступных имён оптимизаторов, при необходимости с фильтрацией.

Выводит список всех зарегистрированных оптимизаторов с возможностью фильтрации с использованием шаблонов с подстановочными знаками. Оптимизаторы можно фильтровать с помощью шаблонов include и exclude, а также при необходимости возвращать описания вместе с каждым именем оптимизатора.

Примеры:

>>> list_optimizers()
['adam', 'adamw', 'sgd', ...]

>>> list_optimizers(['la*', 'nla*'])  # List lamb & lars
['lamb', 'lambc', 'larc', 'lars', 'nlarc', 'nlars']

>>> list_optimizers('*adam*', exclude_filters=['bnb*', 'fused*'])  # Exclude bnb & apex adam optimizers
['adam', 'adamax', 'adamp', 'adamw', 'nadam', 'nadamw', 'radam']

>>> list_optimizers(with_description=True)  # Get descriptions
[('adabelief', 'Adapts learning rate based on gradient prediction error'),
 ('adadelta', 'torch.optim Adadelta, Adapts learning rates based on running windows of gradients'),
 ('adafactor', 'Memory-efficient implementation of Adam with factored gradients'),
...]

timm.optim.get_optimizer_class

< >

( name: strbind_defaults: bool = True ) → If bind_defaults is False

Параметры

  • name — Название оптимизатора для получения (например, ‘adam’, ‘sgd’)
  • bind_defaults — Если True, возвращает частичную функцию с аргументами по умолчанию, связанными из OptimInfo. Если False, возвращает исходный класс оптимизатора.

Возвращает

Если bind_defaults равно False

Класс оптимизатора (например, torch.optim.Adam) Если bind_defaults равно True: Частичная функция с привязанными аргументами по умолчанию

Исключения

ValueError

  • ValueError — если имя оптимизатора не найдено в реестре

Получить класс оптимизатора по имени с возможностью привязать аргументы по умолчанию.

Получает класс оптимизатора или частичную функцию с привязанными аргументами по умолчанию. Это позволяет напрямую создавать экземпляры оптимизаторов с их конфигурациями по умолчанию, не прибегая к полному фабричному механизму.

Примеры:

При привязанных значениях по умолчанию из реестра sgd имеет включённый импульс Нестерова:

SGD = get_optimizer_class('sgd')
opt = SGD(model.parameters(), lr=0.1, momentum=0.9)

Сырой класс оптимизатора:

SGD = get_optimizer_class('sgd', bind_defaults=False)
opt = SGD(model.parameters(), lr=1e-3, momentum=0.9, nesterov=True)

timm.optim.get_optimizer_info

< >

( name: str )

Параметры

  • name — Имя оптимизатора

Исключения

ValueError

  • ValueError — если оптимизатор не найден

Получите OptimInfo для оптимизатора.

Функции групп параметров

timm.optim.param_groups_weight_decay

< >

( model: Moduleweight_decay: typing.Optional[float] = 1e-05weight_decay_exclude_1d: bool = Trueno_weight_decay_list: typing.Collection[str] = ()fallback_list: typing.Collection[str] = ()fallback_no_weight_decay: bool = False )

timm.optim.param_groups_layer_decay

< >

( model: Moduleweight_decay: float = 0.05no_weight_decay_list: typing.Collection[str] = ()fallback_list: typing.Collection[str] = ()fallback_no_weight_decay: bool = Falseweight_decay_exclude_1d: bool = Truelayer_decay: float = 0.75min_scale: float = 0.0no_opt_scale: typing.Optional[float] = Noneverbose: bool = False )

Группы параметров для послойного затухания lr и weight decay Основано на BEiT: https://github.com/microsoft/unilm/blob/master/beit/optim_factory.py#L58

timm.optim.auto_group_layers

< >

( modellayers_per_group = 12num_groups = None )

Классы оптимизаторов

класс timm.optim.AdaBelief

< >

( paramslr = 0.001betas = (0.9, 0.999)eps = 1e-16weight_decay = 0amsgrad = Falsedecoupled_decay = Truefixed_decay = Falserectify = Truedegenerated_to_sgd = Trueforeach: typing.Optional[bool] = None )

Параметры

  • params (iterable) — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров
  • lr (float, optional) — скорость обучения (по умолчанию: 1e-3)
  • betas (Tuple[float, float], optional) — коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата (по умолчанию: (0.9, 0.999))
  • eps (float, optional) — величина, добавляемая к знаменателю для повышения численной устойчивости (по умолчанию: 1e-16)
  • weight_decay (float, optional) — весовое затухание (штраф L2) (по умолчанию: 0)
  • amsgrad (boolean, optional) — использовать ли вариант AMSGrad данного алгоритма из статьи On the Convergence of Adam and Beyond_ (по умолчанию: False)
  • decoupled_decay (boolean, optional) — (по умолчанию: True) Если установлено в True, оптимизатор использует развязанное затухание весов, как в AdamW
  • fixed_decay (boolean, optional) — (по умолчанию: False) Используется, когда decouple установлено в True. Если fixed_decay == True, затухание весов выполняется по формуле $W{new} = W{old} - W{old} \times decay$. Если fixeddecay == False, затухание весов выполняется по формуле $W{new} = W{old} - W{old} \times decay \times lr$. Обратите внимание, что в этом случае коэффициент затухания весов уменьшается вместе с шагом обучения (lr).
  • rectify (boolean, optional) — (по умолчанию: True) Если установлено в True, выполняется исправленное обновление, аналогичное RAdam
  • degenerated_to_sgd (boolean, optional) (по умолчанию —True) Если установлено в True, выполняется обновление SGD, когда дисперсия градиента высока
  • foreach (boolean, optional) — использовать реализацию foreach (для нескольких тензоров); по умолчанию (None) используется, если только это не поддерживается

Реализует алгоритм AdaBelief. Модифицирован на основе Adam из PyTorch

reference: Оптимизатор AdaBelief, адаптация шагов по степени доверия к наблюдаемым градиентам, NeurIPS 2020

Полную таблицу рекомендуемых гиперпараметров см. по адресу https://github.com/juntang-zhuang/Adabelief-Optimizer’ Например, для EfficientNet параметры train/args можно найти в этих gists

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Adafactor

< >

( params: ParamsTlr: typing.Optional[float] = Noneeps: float = 1e-30eps_scale: float = 0.001clip_threshold: float = 1.0decay_rate: float = -0.8betas: typing.Optional[typing.Tuple[float, float]] = Noneweight_decay: float = 0.0scale_parameter: bool = Truewarmup_init: bool = Falsemin_dim_size_to_factor: int = 16caution: bool = False )

Реализует алгоритм Adafactor.

Эта реализация основана на: Adafactor: Adaptive Learning Rates with Sublinear Memory Cost (см. https://arxiv.org/abs/1804.04235)

Обратите внимание, что этот оптимизатор внутренним образом корректирует скорость обучения в зависимости от параметров scale_parameter, relative_step и warmup_init.

Ручной (внешний) график изменения скорости обучения используется, когда задано lr (тогда relative_step равно False). Обратите внимание, что в этой реализации scale_parameter и warmup_init применяются только к относительной скорости обучения (lr=None), в отличие от fairseq / HF Transformers, масштабирование RMS параметров не применяется к внешней скорости обучения.

Ags: params: итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров lr: внешняя скорость обучения eps: константы регуляризации для квадратного градиента и масштаба параметров соответственно eps_scale: константы регуляризации для масштаба параметров соответственно clip_threshold: порог среднеквадратичного значения окончательного обновления градиента decay_rate: коэффициент, используемый для вычисления скользящих средних квадратного градиента beta1: коэффициент, используемый для вычисления скользящих средних градиента weight_decay: затухание весов scale_parameter: если True, относительная скорость обучения шага масштабируется среднеквадратичным значением параметра warmup_init: вычисление скорости обучения, зависящей от времени, зависит от того, используется ли инициализация с разгоном

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.AdafactorBigVision

< >

( params: ParamsTlr: float = 1.0min_dim_size_to_factor: int = 16decay_rate: float = 0.8decay_offset: int = 0beta2_cap: float = 0.999momentum: typing.Optional[float] = 0.9momentum_dtype: typing.Union[str, torch.dtype] = torch.bfloat16eps: typing.Optional[float] = Noneweight_decay: float = 0.0clipping_threshold: typing.Optional[float] = Noneunscaled_wd: bool = Falsecaution: bool = Falsecorrected_weight_decay: bool = False )

Реализация PyTorch варианта Adafactor от BigVision с реализациями для одиночных и множественных тензоров.

Адаптировано из https://github.com/google-research/big_vision Россом Уайтменом

класс timm.optim.Adahessian

< >

( paramslr = 0.1betas = (0.9, 0.999)eps = 1e-08weight_decay = 0.0hessian_power = 1.0update_each = 1n_samples = 1avg_conv_kernel = False )

Параметры

  • params (iterable) — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров
  • lr (float, optional) — скорость обучения (по умолчанию: 0.1)
  • betas ((float, float), optional) — коэффициенты, используемые для вычисления скользящих средних градиента и следа квадратичной гессиана (по умолчанию: (0.9, 0.999))
  • eps (float, optional) — величина, добавляемая к знаменателю для повышения численной устойчивости (по умолчанию: 1e-8)
  • weight_decay (float, optional) — весовое затухание (штраф L2) (по умолчанию: 0.0)
  • hessian_power (float, optional) — показатель степени следа гессиана (по умолчанию: 1.0)
  • update_each (int, optional) — вычислять приближение следа гессиана только после этого количества шагов (для экономии времени) (по умолчанию: 1)
  • n_samples (int, optional) — количество раз, для которого выполняется выборка z для приближения следа гессиана (по умолчанию: 1)

Реализует алгоритм AdaHessian из статьи «ADAHESSIAN: адаптивный оптимизатор второго порядка для машинного обучения»

get_params

< >

( )

Получает все параметры во всех param_groups, у которых есть градиенты

set_hessian

< >

( )

Вычисляет приближение Хатчинсона для следа гессиана и накапливает его для каждого обучаемого параметра.

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю (по умолчанию — None)

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

zero_hessian

< >

( )

Обнуляет накопленные следы гессиана.

класс timm.optim.AdamP

< >

( paramslr = 0.001betas = (0.9, 0.999)eps = 1e-08weight_decay = 0delta = 0.1wd_ratio = 0.1nesterov = Falsecaution = False )

класс timm.optim.AdamWLegacy

< >

( params: ParamsTlr: float = 0.001betas: typing.Tuple[float, float] = (0.9, 0.999)eps: float = 1e-08weight_decay: float = 0.01amsgrad: bool = Falsecaution: bool = Falsecorrected_weight_decay: bool = Falsemaximize: bool = Falseforeach: typing.Optional[bool] = Nonecapturable: bool = Falseclipping_threshold: typing.Optional[float] = None )

Параметры

  • params — итерируемый объект параметров для оптимизации или словари, определяющие группы параметров
  • lr — скорость обучения
  • betas — коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата
  • eps — величина, добавляемая в знаменатель для повышения численной устойчивости
  • weight_decay — коэффициент затухания весов
  • amsgrad — использовать ли вариант AMSGrad данного алгоритма из статьи On the Convergence of Adam and Beyond
  • caution — будьте осторожны при использовании AdamW
  • corrected_weight_decay — применить скорректированное затухание весов (lr**2 / max_lr)
  • maximize — максимизировать параметры на основе целевой функции, а не минимизировать
  • foreach — whether foreach implementation of optimizer is used. If unspecified by the user (so foreach is None), we will try to use foreach over for-loop implementation on CUDA, since it is faster in general.
  • capturable — указывает, безопасно ли захватывать этот экземпляр в графе CUDA. Передача True может ухудшить производительность при отсутствии графа, поэтому, если вы не планируете захватывать этот экземпляр в графе, оставьте значение False
  • clipping_threshold — порог обрезки обновления RMS (StableAdamW, https://arxiv.org/abs/2304.13013), обновление масштабируется множителем 1 / max(1, rms / clipping_threshold), где rms — это RMS от grad / (sqrt(v_hat) + eps). Затухание обновления параметров при резком увеличении градиента относительно их оценки второго момента. 1.0, как в статье, None (по умолчанию) отключает. Как в Adafactor, отделённое затухание весов не обрезается (StableAdamW также масштабирует затухание обрезанным lr).

Реализует алгоритм AdamW.

NOTE: Данная реализация устарела в пользу torch.optim.AdamW и остаётся в качестве справочного материала

Ссылки:

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Adan

< >

( paramslr: float = 0.001betas: typing.Tuple[float, float, float] = (0.98, 0.92, 0.99)eps: float = 1e-08weight_decay: float = 0.0no_prox: bool = Falsecaution: bool = Falseforeach: typing.Optional[bool] = None )

Параметры

  • params — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров.
  • lr — learning rate.
  • betas — Коэффициенты, используемые для моментов первого и второго порядка.
  • eps — Слагаемое, добавляемое к знаменателю для повышения численной устойчивости.
  • weight_decay — Развязанное затухание весов (штраф L2)
  • no_prox — способ применения весового затухания
  • caution — Включить осторожность из «Осторожных оптимизаторов»
  • foreach — Если True, будет использоваться реализация torch._foreach. Быстрее, но потребляет немного больше памяти.

Реализует pytorch-вариант Adan.

Adan был предложен в статье Adan: Adaptive Nesterov Momentum Algorithm for Faster Optimizing Deep Models https://arxiv.org/abs/2208.06677

шаг

< >

( closure = None )

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

класс timm.optim.Adopt

< >

( params: ParamsTlr: typing.Union[float, torch.Tensor] = 0.001betas: typing.Tuple[float, float] = (0.9, 0.9999)eps: float = 1e-06clip_exp: typing.Optional[float] = 0.333weight_decay: float = 0.0decoupled: bool = Falsecorrected_weight_decay: bool = Falsecaution: bool = Falseforeach: typing.Optional[bool] = Nonemaximize: bool = Falsecapturable: bool = Falsedifferentiable: bool = False )

ADOPT: Модифицированный Adam может сходиться с любым β2 с оптимальной скоростью: https://arxiv.org/abs/2411.02853

шаг

< >

( closure = None )

Параметры

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

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

класс timm.optim.kron.Kron

< >

( params: ParamsTlr: float = 0.001momentum: float = 0.9weight_decay: float = 0.0preconditioner_update_probability: typing.Union[typing.Callable, float, NoneType] = Nonemax_size_triangular: int = 2048min_ndim_triangular: int = 2memory_save_mode: typing.Optional[str] = Nonemomentum_into_precond_update: bool = Trueprecond_lr: float = 0.1precond_init_scale: float = 1.0mu_dtype: typing.Optional[torch.dtype] = Noneprecond_dtype: typing.Optional[torch.dtype] = Nonedecoupled_decay: bool = Falsecorrected_weight_decay: bool = Falseflatten: bool = Falseflatten_start_dim: int = 2flatten_end_dim: int = -1stochastic_weight_decay: bool = Falsedeterministic: bool = False )

Параметры

  • params — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров.
  • lr — learning rate.
  • momentum — Параметр импульса.
  • weight_decay — Завышение веса.
  • preconditioner_update_probability — Вероятность обновления преобразователя. Если значение равно None, по умолчанию используется расписание, которое аннелирует значение с 1.0 до 0.03 к 4000 шагам.
  • max_size_triangular — Максимальный размер для того, чтобы преобразователь (preconditioner) для dim был треугольным.
  • min_ndim_triangular — минимальное количество измерений, которое должен иметь слой, чтобы использовать треугольные преобразователи.
  • memory_save_mode — ‘one_diag’, ‘smart_one_diag’ или ‘all_diag’, по умолчанию None для установки всех преобразователей в треугольный вид, ‘one_diag’ устанавливает диагональный вид для наибольшего или последнего измерения в каждом слое, а ‘all_diag’ устанавливает диагональный вид для всех преобразователей.
  • momentum_into_precond_update — передавать ли импульс в обновление преобразователя вместо исходных градиентов.
  • mu_dtype — Тип данных (Dtype) для накопителя импульса.
  • precond_dtype — Тип данных преобразователя.
  • decoupled_decay — развязанное затухание весов в стиле AdamW
  • corrected_weight_decay — применять скорректированный весовой распад при использовании decoupled_decay (lr**2 / max_lr)
  • flatten — Схлопнуть измерения, а не полагаться полностью на выражения для параметров более высокого ранга
  • flatten_start_dim — начало диапазона сглаживания, по умолчанию 2. Хороший компромисс для ConvNets.
  • flatten_end_dim — Конец диапазона сглаживания, по умолчанию -1.
  • stochastic_weight_decay — Включает случайную модуляцию затухания весов
  • deterministic — Детерминированное поведение при сохранении / загрузке (возобновлении). FIXME медленный, требует доработки

Реализует PSGD Kron из https://github.com/lixilinx/psgd_torch.

класс timm.optim.Lamb

< >

( params: ParamsTlr: float = 0.001bias_correction: bool = Truebetas: typing.Tuple[float, float] = (0.9, 0.999)eps: float = 1e-06weight_decay: float = 0.01grad_averaging: bool = Truemax_grad_norm: typing.Optional[float] = 1.0trust_clip: bool = Falsealways_adapt: bool = Falsecaution: bool = Falsedecoupled_decay: bool = Falsecorrected_weight_decay: bool = Falseforeach: typing.Optional[bool] = None )

Параметры

  • params — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров.
  • lr — learning rate
  • betas — Коэффициенты, используемые для вычисления скользящих средних градиента и его нормы.
  • eps — Слагаемое, добавляемое к знаменателю для повышения численной устойчивости.
  • weight_decay — Затухание весов
  • grad_averaging — Применяется ли (1-beta2) к градиенту при вычислении скользящих средних градиента.
  • max_grad_norm — Значение, используемое для обрезки глобальной нормы градиентов.
  • trust_clip — Включает обрезание отношения доверия LAMBC.
  • always_adapt — Применить адаптивную скорость обучения к параметру 0.0 weight decay.
  • caution — Будьте осторожны.
  • decoupled — применить раздельное затухание весов
  • corrected_weight_decay — применять скорректированный весовой распад (lr**2 / max_lr) при использовании decoupled_decay
  • foreach — использовать реализацию foreach (для нескольких тензоров), по умолчанию (None) используется, если не поддерживается

Реализует чистый pytorch-вариант оптимизатора FuseLAMB (вариант NvLamb) из apex.optimizers.FusedLAMB ссылка: https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/Transformer-XL/pytorch/lamb.py

LAMB был предложен в:

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.LaProp

< >

( params: ParamsTlr: float = 0.0004betas: typing.Tuple[float, float] = (0.9, 0.999)eps: float = 1e-15weight_decay: float = 0.0caution: bool = Falsecorrected_weight_decay: bool = Falseforeach: typing.Optional[bool] = None )

Параметры

  • foreach — использовать реализацию foreach (для нескольких тензоров), по умолчанию (None) используется, если не поддерживается (см. laprop())

Оптимизатор LaProp

Статья: LaProp: Separating Momentum and Adaptivity in Adam, https://arxiv.org/abs/2002.04839

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Lars

< >

( paramslr = 1.0momentum = 0dampening = 0weight_decay = 0nesterov = Falsetrust_coeff = 0.001eps = 1e-08trust_clip = Falsealways_adapt = Falseforeach: typing.Optional[bool] = None )

Параметры

  • params (iterable) — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров.
  • lr (float, optional) — скорость обучения (по умолчанию: 1.0).
  • momentum (float, optional) — коэффициент импульса (по умолчанию: 0)
  • weight_decay (float, optional) — весовое затухание (штраф L2) (по умолчанию: 0)
  • dampening (float, optional) — затухание для импульса (по умолчанию: 0)
  • nesterov (bool, optional) — включает импульс Нестерова (по умолчанию: False)
  • trust_coeff (float) — коэффициент доверия для вычисления адаптивной lr / trust_ratio (по умолчанию: 0.001)
  • eps (float) — eps для знаменателя деления (по умолчанию: 1e-8)
  • trust_clip (bool) — включить обрезание отношения доверия LARC (по умолчанию: False)
  • always_adapt (bool) — всегда применять адаптацию LARS LR, иначе только когда group weight_decay != 0 (по умолчанию: False)
  • foreach (bool, optional) — использовать реализацию foreach (для нескольких тензоров); по умолчанию (None) используется, если только это не поддерживается

LARS для PyTorch

Статья: Large batch training of Convolutional Networks - https://arxiv.org/pdf/1708.03888.pdf

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Lion

< >

( params: ParamsTlr: float = 0.0001betas: typing.Tuple[float, float] = (0.9, 0.99)weight_decay: float = 0.0caution: bool = Falsecorrected_weight_decay: bool = Falsemaximize: bool = Falseforeach: typing.Optional[bool] = None )

Реализует алгоритм Lion.

шаг

< >

( closure = None )

Параметры

  • closure — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Lookahead

< >

( base_optimizeralpha = 0.5k = 6 )

класс timm.optim.MADGRAD

< >

( params: typing.Anylr: float = 0.01momentum: float = 0.9weight_decay: float = 0eps: float = 1e-06decoupled_decay: bool = False )

Параметры

  • params (iterable) — Итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров.
  • lr (float) — Коэффициент обучения (по умолчанию: 1e-2).
  • momentum (float) — Значение импульса в диапазоне [0,1) (по умолчанию: 0.9).
  • weight_decay (float) — Коэффициент затухания весов, то есть L2-штраф (по умолчанию: 0).
  • eps (float) — Член, добавляемый к знаменателю вне операции извлечения корня для повышения численной устойчивости. (по умолчанию: 1e-6).

MADGRAD_: метод стохастической оптимизации с импульсом, адаптивным и двойным усреднением градиента.

.. _MADGRAD: https://arxiv.org/abs/2101.11075

MADGRAD — это универсальный оптимизатор, который можно использовать вместо SGD или Adam; он может сходиться быстрее и лучше обобщать. В настоящее время поддерживается только GPU. Как правило, можно использовать те же расписания скорости обучения, что и для SGD или Adam. Общая скорость обучения не сопоставима с ни одним из этих методов и должна определяться с помощью перебора гиперпараметров.

MADGRAD требует меньшего затухания весов, чем другие методы, часто вплоть до нуля. Значения импульса, используемые для SGD или beta1 в Adam, должны работать и здесь.

Для разреженных задач оба параметра weight_decay и momentum должны быть установлены в 0.

шаг

< >

( closure: typing.Optional[typing.Callable[[], float]] = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Mars

< >

( params: ParamsTlr: float = 0.003betas: typing.Tuple[float, float] = (0.9, 0.99)eps: float = 1e-08weight_decay: float = 0.0gamma: float = 0.025mars_type: str = 'adamw'optimize_1d: bool = Falselr_1d_factor: float = 1.0betas_1d: typing.Optional[typing.Tuple[float, float]] = Nonecaution: bool = False )

Оптимизатор MARS

Статья: MARS: Освобождение потенциала снижения дисперсии для обучения больших моделей https://arxiv.org/abs/2411.10438

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.Muon

< >

( params: ParamsTlr: float = 0.02weight_decay: float = 0momentum: float = 0.95nesterov: bool = Falsens_steps: int = 5ns_coefficients: typing.Union[str, typing.Tuple[float, float, float], typing.List[typing.Tuple[float, float, float]]] = 'quintic'eps: float = 1e-07safety_factor: float = 1.0adjust_lr_fn: typing.Optional[str] = 'match_rms_adamw'conv_mode: str = 'flatten'normalize_spatial: bool = Trueadamw_lr: typing.Optional[float] = Nonefallback_lr_scale: float = 1.0betas: typing.Tuple[float, float] = (0.9, 0.95)algo: str = 'muon'scale_eps: bool = Falsecapturable: bool = Falseverbose: bool = False )

Muon - MomentUm, ортогонализированный методом Ньютона-Шульца

Сочетает Muon для параметров размерности 2D и выше (матрицы весов) с AdamW для параметров размерности 1D (смещения, нормализации) и групп параметров, для которых установлено ‘use_fallback=True’ (или ‘use_muon=False’ для совместимости).

Поддерживает два алгоритма:

  • “muon”: стандартный алгоритм Muon с импульсом + ортогонализацией
  • “adamuon”: алгоритм AdaMuon, добавляющий поэлементную оценку второго момента к ортогонализированным направлениям для адаптивного масштабирования, похожего на Adam

шаг

< >

( closure = None )

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

класс timm.optim.NAdamLegacy

< >

( paramslr = 0.002betas = (0.9, 0.999)eps = 1e-08weight_decay = 0schedule_decay = 0.004 )

Параметры

  • params (iterable) — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров
  • lr (float, optional) — скорость обучения (по умолчанию: 2e-3)
  • betas (Tuple[float, float], optional) — коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата
  • eps (float, optional) — величина, добавляемая к знаменателю для повышения численной устойчивости (по умолчанию: 1e-8)
  • weight_decay (float, optional) — весовое затухание (штраф L2) (по умолчанию: 0)
  • schedule_decay (float, optional) — коэффициент затухания расписания импульса (по умолчанию: 4e-3)

Реализует алгоритм Nadam (вариант Adam на основе импульса Нестерова).

NOTE: Данная реализация устарела в пользу torch.optim.NAdam и остаётся в качестве справочного материала

В статье Incorporating Nesterov Momentum into Adam__ это было предложено.

http://cs229.stanford.edu/proj2015/054_report.pdf http://www.cs.toronto.edu/~fritz/absps/momentum.pdf

Изначально взято из: https://github.com/pytorch/pytorch/pull/1408 Примечание: возможны проблемы, но хорошо работает на некоторых задачах.

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.NAdamW

< >

( params: ParamsTlr: float = 0.001betas: typing.Tuple[float, float] = (0.9, 0.999)eps: float = 1e-08weight_decay: float = 0.01caution: bool = Falsecorrected_weight_decay: bool = Falsemaximize: bool = Falseforeach: typing.Optional[bool] = Nonecapturable: bool = Falseclipping_threshold: typing.Optional[float] = None )

Параметры

  • params — итерируемый объект параметров для оптимизации или словари, определяющие группы параметров
  • lr — скорость обучения
  • betas — коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата
  • eps — величина, добавляемая в знаменатель для повышения численной устойчивости
  • weight_decay — коэффициент затухания весов
  • caution — включить режим осторожности
  • corrected_weight_decay — применить скорректированное затухание весов (lr**2 / max_lr)
  • maximize — максимизировать параметры на основе целевой функции, а не минимизировать
  • foreach — используется ли foreach-реализация оптимизатора. Если не указано (None), то foreach-реализация применяется на CUDA (устройства с foreach-ядрами), поскольку в целом она быстрее.
  • capturable — указывает, безопасно ли захватывать этот экземпляр в графе CUDA
  • clipping_threshold — порог обрезки обновления RMS (StableAdamW, https://arxiv.org/abs/2304.13013), обновление масштабируется множителем 1 / max(1, rms / clipping_threshold), где rms — это RMS от grad / (sqrt(v_hat) + eps). Затухание обновления параметров при резком увеличении градиента относительно их оценки второго момента. 1.0, как в статье, None (по умолчанию) отключает. Как в Adafactor, отделённое затухание весов не обрезается (StableAdamW также масштабирует затухание обрезанным lr).

Реализует алгоритм NAdamW.

Реализация алгоритма NAdam описана в таблице 1 в https://arxiv.org/abs/1910.05446 (в коде также есть комментарий, указывающий на единственное отличие NAdamW от AdamW).

За дополнительными деталями относительно алгоритма мы отсылаем к

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.NvNovoGrad

< >

( paramslr = 0.001betas = (0.95, 0.98)eps = 1e-08weight_decay = 0grad_averaging = Falseamsgrad = Falsedecoupled_decay = Falsecorrected_weight_decay = False )

Параметры

  • params (iterable) — итерируемый объект с параметрами для оптимизации или словарями, определяющими группы параметров
  • lr (float, optional) — скорость обучения (по умолчанию: 1e-3)
  • betas (Tuple[float, float], optional) — коэффициенты, используемые для вычисления скользящих средних градиента и его квадрата (по умолчанию: (0.95, 0.98))
  • eps (float, optional) — величина, добавляемая к знаменателю для повышения численной устойчивости (по умолчанию: 1e-8)
  • weight_decay (float, optional) — весовое затухание (штраф L2) (по умолчанию: 0)
  • grad_averaging — усреднение градиентов
  • amsgrad (boolean, optional) — использовать ли вариант AMSGrad данного алгоритма из статьи On the Convergence of Adam and Beyond_ (по умолчанию: False)
  • decoupled_decay — применять весовое затухание непосредственно к весам (lr * weight_decay на каждом шаге), а не добавлять его к нормализованному градиенту перед обновлением импульса (как описано в статье)
  • corrected_weight_decay — применять скорректированное затухание весов (lr**2 / max_lr), если decoupled_decay равно True

Реализует алгоритм Novograd.

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель
  • and возвращает потерю. —

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

класс timm.optim.RAdamLegacy

< >

( paramslr = 0.001betas = (0.9, 0.999)eps = 1e-08weight_decay = 0 )

Оптимизатор RAdam для PyTorch

NOTE: Данная реализация устарела в пользу torch.optim.AdamW и остаётся в качестве справочного материала

класс timm.optim.RMSpropTF

< >

( params: ParamsTlr: float = 0.01alpha: float = 0.9eps: float = 1e-10weight_decay: float = 0momentum: float = 0.0centered: bool = Falsedecoupled_decay: bool = Falsecorrected_weight_decay: bool = Falselr_in_momentum: bool = Truecaution: bool = Falseforeach: typing.Optional[bool] = None )

Параметры

  • params — итерируемый объект параметров для оптимизации или словари, определяющие группы параметров
  • lr — скорость обучения
  • momentum — коэффициент импульса
  • alpha — константа сглаживания (затухания)
  • eps — величина, добавляемая в знаменатель для повышения численной устойчивости
  • centered — если True, вычисляется центрированный RMSProp, градиент нормализуется по оценке его дисперсии
  • weight_decay — весовое затухание (L2-штраф) (по умолчанию: 0)
  • decoupled_decay — раздельное затухание весов согласно https://arxiv.org/abs/1711.05101
  • corrected_weight_decay — применять скорректированное затухание весов (lr**2 / max_lr), если decoupled_decay равно True
  • lr_in_momentum — масштабирование скорости обучения включено в обновление буфера импульса в соответствии с настройками по умолчанию в Tensorflow
  • caution — проявляйте осторожность
  • foreach — использовать реализацию foreach (для нескольких тензоров), по умолчанию (None) используется, если не поддерживается (см. rmsprop_tf())

Реализует алгоритм RMSprop (эпсилон в стиле TensorFlow)

NOTE: Это прямое копирование PyTorch RMSprop с применением eps перед sqrt и несколькими другими изменениями для более точного соответствия Tensorflow при совпадающих гиперпараметрах.

Среди значимых изменений:

  1. Epsilon, применяемый внутри квадратного корня
  2. square_avg инициализирован единицами
  3. Масштабирование LR обновления, накопленного в буфере импульса

Предложено Дж. Хинтоном в его курсе.

Центрированная версия впервые появляется в Генерация последовательностей с помощью рекуррентных нейронных сетей.

шаг

< >

( closure = None )

Параметры

  • closure (callable, optional) — замыкание, которое повторно вычисляет модель и возвращает потерю.

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

класс timm.optim.SGDP

< >

( paramslr = torch.optim.optimizer.requiredmomentum = 0dampening = 0weight_decay = 0nesterov = Falseeps = 1e-08delta = 0.1wd_ratio = 0.1caution = False )

класс timm.optim.SGDW

< >

( params: ParamsTlr: float = 0.001momentum: float = 0.0dampening: float = 0.0weight_decay: float = 0.0nesterov: bool = Falsecaution: bool = Falsecorrected_weight_decay: bool = Falsemaximize: bool = Falseforeach: typing.Optional[bool] = Nonedifferentiable: bool = False )

шаг

< >

( closure = None )

Параметры

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

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

Update on GitHub