timm documentation

Optimizasyon

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Optimizasyon

Bu sayfa, timm içinde yer alan optimizörlerin API referans belgelerini ve optimizör fabrikası aracılığıyla nasıl seçildiğini ve yapılandırıldığını özetleyen bir genel bakışı içerir.

Kullanım

Optimizatörler, create_optimizer_v2 ile ad üzerinden oluşturulur. Bir model verildiğinde, fabrika optimizatörü oluşturmadan önce parametre gruplarını (ağırlık çürümesi hariç tutmaları, isteğe bağlı katman bazlı öğrenme oranı azaltması) oluşturur. Optimizatöre özgü argümanlar, anahtar kelime argümanları olarak geçirilir.

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))

Eğitim betiği (train.py) bunları aynı şekilde şu bayraklar aracılığıyla sunar:

  • --opt optimizatörü seçer.
  • --lr öğrenme oranını ayarlar.
  • --weight-decay ağırlık çürümesini ayarlar.
  • --momentum momentum değerini ayarlar.
  • --opt-eps, epsilon (eps) değerini ayarlar.
  • --opt-betas, beta katsayılarını (betas) ayarlar.
  • --layer-decay katman bazlı öğrenme oranı azalmasını ayarlar.
  • --opt-kwargs key=value ... diğer tüm optimizör argümanlarını iletir.

Adlandırma kuralları

Kayıtlı adlar küçük harflidir, bir taban optimizör adı ve değiştiricilerden oluşur:

DeğiştiriciAnlamÖrnekler
c önekiDikkatli varyant, güncelleme işareti gradyanla uyuşmadığı yerde maskeleme yapılır (Cautious Optimizers)cadamw, clion, cmars, cadopt
w son ekiVarsayılan olarak bağlı L2 azalması kullanan optimizörler için ayrıştırılmış (AdamW tarzı) ağırlık azalmasısgdw, lambw, adoptw, novogradw, rmsproptfw
c sonekiDüzeltilmiş ağırlık çürümesi, çürüme lr yerine lr² / max_lr ile ölçeklenir (Eğitimin Sonuna Yakınken Gradyanlar Neden Hızlı Artar)adamc, nadamc, sgdc, lionc, adoptc, kronc
n önekiNesterov momentum (SGD, LARS ve Muon aileleri)nesterov, nlars, nmuon, nadamuon
lookahead_ önekiOptimizatörü Lookahead içine sarınlookahead_adamw
fused önekiNVIDIA Apex birleşik uygulaması (apex gerektirir)fusedadamw, fusedlamb
bnb önekibitsandbytes uygulaması, 8-bit durum için 8bit soneki (bitsandbytes gerektirir)bnbadamw, bnbadamw8bit

Birkaç ad, kurallardan önceye dayanmaktadır: lambc ve larc, güven oranı kırpma (trust ratio clipping) içeren LAMB / LARS'tır (düzeltilmiş sönümleme LAMB varyantı lambcd'dir), momentum klasik momentumlu SGD'dir ve sgd Nesterov momentumlu SGD'dir. Aşağıdaki tablodaki legacy uygulamaları, PyTorch'a dahil edilmelerinden önceye dayanmaktadır.

Optimizatör aileleri

İsimlerUygulamaNotlar
adamw, adam, nadam, radam, radamw, adamax, adadelta, adagrad, rmsprop, sgd, momentum, nesterovtorch.optim
adamwlegacy, adamc, cadamw, cadamcAdamWLegacyAdamW dikkatli kullanın, düzeltilmiş azalma, güncelleme kırpma, capturable
nadamw, nadamc, cnadamw, cnadamcNAdamWNesterov momentum ile AdamW (MLCommons algoritmik-etkinlik formu)
adopt, adoptw, adoptc, cadopt, cadoptw, cadoptcAdoptHerhangi bir β2 için yakınsayan Adam varyantı
adan, adanw, cadan, cadanwAdanAdaptif Nesterov momentum
adabelief, radabeliefAdaBeliefradabelief, RAdam tarzı düzeltme ekler
adafactor, cadafactorAdafactorfairseq Adafactor, lr=None olduğunda göreli adım boyutu
adafactorbv, adafactorbvc, cadafactorbv, cadafactorbvcAdafactorBigVisionBüyük Görüntü Adafactor, faktörlü ikinci anlar, düşük hassasiyet momentumu, güncelleme kırpma
adamp, cadamp, sgdp, csgdpAdamP, SGDPÖlçekten bağımsız ağırlıklar için güncellemenin izdüşümü
adahessianAdahessianİkinci dereceden, bir kapanış gerektirir (is_second_order)
kron, kronw, kroncKronKronecker-faktörlü ön koşullandırıcı ile PSGD
lamb, lambc, lambw, lambcw, lambcd, clamb, clambwLambKatman bazlı adaptif momentler, trust_clip varyantları (lambc, lambcw)
laprop, lapropc, clapropLaPropMomentum ve adaptiflik ayrı
lars, larc, nlars, nlarcLarsKatman bazlı adaptif oran ölçekleme, trust_clip varyantları (larc, nlarc)
lion, lionc, clion, clioncLionGeliştirilmiş işaret momentumu
madgrad, madgradwMADGRADMomentum tabanlı çift ortalama
mars, cmarsMarsVaryans azaltma, AdamW veya Lion tarzı güncelleme
muon, nmuon, adamuon, nadamuonMuon2D+ ağırlıklar için Newton-Schulz ortogonalize edilmiş momentum, 1D parametreler için AdamW / NAdamW yedeği
novograd, novogradw, novogradcNvNovoGradKatman bazlı normalize edilmiş anlar
rmsproptf, rmsproptfw, rmsproptfc, crmsproptfRMSpropTFTensorFlow işlemlerin sıralaması ve eps işleme, momentum tamponuna katlanmış lr
sgdw, nesterovw, sgdc, csgdw, csgdcSGDWAyrıştırılmış ağırlık bozulması ile SGD
nadamlegacy, radamlegacyNAdamLegacy, RAdamLegacytorch.optim tarafından yerini alan referans uygulamaları
fused*, bnb*NVIDIA Apex, bitsandbytesPaket yüklendiğinde kaydedilir

Yaygın seçenekler

Çoğu timm optimizörü, standart lr, weight_decay, betas ve eps dışında ortak bir seçenek seti paylaşır. Hangi optimizörlerin hangi seçenekleri kabul ettiği aşağıdaki sınıf imzalarından kontrol edilebilir; fabrika, desteklenmeyen argümanlarda hata fırlatır.

  • caution, c önekli kayıt adlarına eşdeğer olan dikkatli güncelleme maskesini uygular.
  • corrected_weight_decay, lr (sonu c ekli adlar) yerine lr² / max_lr ile decoupled weight decay'i ölçekler, böylece etkili decay öğrenme hızı zaman çizelgesini takip eder. max_lr, optimizörün oluşturulduğu öğrenme hızıdır; onu tepe zaman çizelgesi lr ile oluşturun (train.py bunu yapar). Her parametre grubunda tutulur (max_lr_snapshot) ve optimizör durumuyla birlikte kaydedilir / geri yüklenir.
  • decoupled_decay (veya decoupled), varsayılan olarak bağlı L2 çürümesi kullanan optimizörleri AdamW tarzı çürümeye ( w son ekli adlar) geçiş yapar.
  • foreach çoklu tensör uygulamasını seçer. Varsayılan olarak (None), CUDA ve foreach çekirdeklerine sahip diğer cihazlarda, yapılandırma tarafından desteklenmediği durumlarda (örneğin capturable olmadan bir lr tensörü veya gerekli _foreach_maximum_ aşırı yüklemesi olmayan bir PyTorch sürümünde caution) torch.optim ile uyumlu şekilde kullanılır. Çoklu tensör adımı, her parçanın çalışma kümesinin GPU L2 önbelleğinde kalmasını sağlayacak şekilde boyutlandırılmış parametre parçaları halinde çalıştırılır; bu, büyük modellerde her işlemde tüm parametrelerin bellekten bir kez akıtılmasından daha hızlıdır. Parça boyutu, cihazın L2 önbellek boyutundan (PyTorch >= 2.5) türetilir ve sonuçlanan parçanın 4M elemandan küçük olduğu cihazlarda parçalama atlanır. TIMM_FOREACH_CHUNK_SIZE=<elements> parça boyutunu geçersiz kılar, 0 parçalamayı devre dışı bırakır.
  • capturable (AdamWLegacy, NAdamW, Adopt, Muon), adım sayısını cihazda tutar; böylece adım bir CUDA grafında yakalanabilir. Tüm optimizörler, torch.compile ve CUDA grafikleriyle kullanım için yerinde güncellenen bir zaman çizelgesi tarafından güncellenen, 0 boyutlu bir tensör olarak verilen lr değerini kabul eder.
  • clipping_threshold (AdamWLegacy, NAdamW, AdafactorBigVision) güncellemeyi RMS'ine göre kırpıyor: update / max(1, rms / threshold), burada rms ikinci an normalize edilmiş gradyanın RMS'idir, tensör başına (StableAdamW, Adafactor). Makalelerdeki gibi 1.0. Adafactor'da olduğu gibi (ayrılmış) ağırlık çürümesi kırpılmaz, StableAdamW da çürümeyi kırpılmış öğrenme oranıyla ölçekler.
  • maximize hedefi minimize etmek yerine maksimize eder.

Düşük hassasiyetli parametreler (bfloat16, float16) her yerde desteklenir:

  • AdaBelief, RAdamLegacy ve Adafactor, düşük hassasiyetli parametreler için durumlarını float32 olarak tutar.
  • AdafactorBigVision, momentum değerini azaltılmış hassasiyette (momentum_dtype) tutar.
  • Kron'un ayrı mu_dtype / precond_dtype seçenekleri vardır.

Bu durum dtypes'leri load_state_dict tarafından korunur (PyTorch'ün varsayılan yükleyicisi durumu param dtype'una dönüştürür). Adım işlevleri host senkronizasyonlarından kaçınır (cihaz tensörlerindeki veriye bağımlı Python dallanmaları), AdamP / SGDP'nin projeksiyon kontrolü istisnadır.

Parametre grupları

Bir model verildiğinde, create_optimizer_v2 parametreleri param_groups_weight_decay ile gruplar (1B parametreler ve modelin no_weight_decay() kümesi için bozunma uygulanmaz) veya layer_decay ayarlandığında, modelin group_matcher() kullanarak katman başına layer_decay ** (num_layers - layer_id) öğrenme oranı ölçeği atayan param_groups_layer_decay ile gruplar. group_matcher() içermeyen modeller, başlığı ayırmak için modelin pretrained_cfg['classifier'] değerine ihtiyaç duyan auto_group_layers çözümüne geri döner. Hibrit optimizatörler (Muon) için fallback_list ve fallback_no_weight_decay argümanları, parametreleri yedek (AdamW) optimizatöre yönlendirir.

API

Fabrika işlevleri

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 )

Parametreler

  • model_or_params — Bir PyTorch modeli veya parametre/parametre grupları içeren bir iterable. Bir model sağlanırsa, parametreler diğer argümanlara göre otomatik olarak çıkarılır ve gruplanır.
  • opt — Oluşturulacak optimizörün adı (ör. ‘adam’, ‘adamw’, ‘sgd’). Mevcut seçenekleri görmek için list_optimizers() kullanın.
  • lr — Öğrenme oranı. None ise, optimizörün varsayılanı kullanılır.
  • weight_decay — Ağırlık çürüme katsayısı. model_or_params bir model ise, parametre gruplarını oluşturmak için kullanılacaktır.
  • momentum — Momentum'u destekleyen optimizatörler için momentum faktörü. Yalnızca seçilen optimizatör momentum parametresini kabul ediyorsa kullanılır.
  • foreach — Kullanılabilirse foreach (çoklu tensör) uygulamasını etkinleştirir/devre dışı bırakır. None ise, optimizöre özgü varsayılanlar kullanılır.
  • filter_bias_and_bn — True ise, bias, norm katmanı parametreleri (tüm 1d parametreler) için weight decay uygulanmaz. Yalnızca model_or_params bir model olduğunda ve weight_decay > 0 olduğunda kullanılır.
  • fallback_list — Hibrit optimizörler için (ör. Muon için AdamW) yedek optimizör kullanılacak parametre ad kalıplarının koleksiyonu. Jolly joker eşleşmesini destekler.
  • fallback_no_weight_decay — True ise, modelin no_weight_decay() listesindeki parametreler, hibrit optimizatörler için yedek optimizatörü kullanır (ör. Muon için AdamW).
  • layer_decay — İsteğe bağlı katman bazlı öğrenme oranı azaltma çarpanı. Verildiğinde, öğrenme oranları layer_decay^(max_depth - layer_depth) ile ölçeklendirilir. Yalnızca model_or_params bir model olduğunda kullanılır.
  • param_group_fn — Özel parametre grupları oluşturmak için isteğe bağlı bir işlev. Sağlanırsa, diğer parametre gruplandırma seçenekleri yok sayılır.
  • **kwargs — Ek optimizöre özgü argümanlar (ör. Adam için betas).

timm kayıt defteri üzerinden bir optimizör örneği oluşturun.

Uygun parametre grupları ve ayarlarla bir optimizator oluşturur ve yapılandırır. Ağırlık çürümesi ve katman bazlı öğrenme oranları için otomatik parametre grubu oluşturma desteğinin yanı sıra özel parametre gruplamasını da destekler.

Örnekler:

Bir modelden AdamW, parametre grupları otomatik olarak oluşturulur:

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

Momentum ve ağırlık çürümesi (weight decay) ile SGD:

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

Katman bazlı öğrenme oranı azalması ile Adam:

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

Özel parametre grupları:

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)

Not: Parametre grubu işleme önceliği:

  1. param_group_fn sağlanırsa, yalnızca bu kullanılacaktır
  2. layer_decay sağlanırsa, katman bazlı gruplar oluşturulur
  3. weight_decay > 0 ve filter_bias_and_bn True ise, ağırlık çürümesi grupları oluşturulur
  4. Aksi takdirde, tüm parametreler tek bir grupta olacaktır

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

Parametreler

  • filter — Jolly joker tarzı filtre dizgesi veya filtre dizgileri listesi (ör. tüm Adam varyantları için ‘adam’ veya Adam varyantları ve 8-bit optimizatörler için [‘adam’, ‘*8bit’]). Boş dizge, filtreleme yapılmadığı anlamına gelir.
  • exclude_filters — İsteğe bağlı, hariç tutulacak joker desenlerinin listesi. Örneğin, [’8bit’, ‘fused’] 8-bit ve fused uygulamalarını hariç tutar.
  • with_description — True ise, yalnızca adlar yerine (name, description) demetleri döndürülür. Açıklamalar, optimizör özelliklerinin kısa açıklamalarını sağlar.

Dönüş değeri

with_description False ise

Dizgi olarak optimizör adlarının listesi (ör. ['adam', 'adamw', ...]) with_description True ise: (ad, açıklama) demetlerinin listesi (ör. [('adam', 'Adaptive Moment…'), ...])

Mevcut optimizör adlarını, isteğe bağlı olarak filtrelenmiş şekilde listeler.

Kayıtlı tüm optimizörleri, isteğe bağlı olarak joker karakterli desenlerle filtreleme yaparak listeler. Optimizörler, include ve exclude desenleri kullanılarak filtrelenebilir ve isteğe bağlı olarak her optimizör adı ile birlikte açıklamaları da döndürülebilir.

Örnekler:

>>> 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

Parametreler

  • name — Alınacak optimizörün adı (ör. ‘adam’, ‘sgd’)
  • bind_defaults — True ise, OptimInfo'dan varsayılan argümanlar bağlanmış bir kısmi fonksiyon döndürür. False ise, ham optimizör sınıfını döndürür.

Dönüş değeri

bind_defaults False ise

Optimizatör sınıfı (ör. torch.optim.Adam) bind_defaults True ise: Varsayılan argümanları bağlı bir kısmi fonksiyon

Yükseltilen

ValueError

  • ValueError — Optimizör adı kayıt defterinde bulunamazsa

Varsayılan argümanları bağlama seçeneğiyle adıyla optimizör sınıfını getirir.

Optimizatör sınıfını veya varsayılan argümanları bağlı bir kısmi işlevi getirir. Bu, tam fabrikadan geçmeden, optimizatörlerin varsayılan yapılandırmalarıyla doğrudan örneklenmesine olanak tanır.

Örnekler:

Kayıt varsayılanları bağlandığında, sgd nesterov momentum özelliği etkinleştirilmiş olarak gelir:

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

Ham optimizör sınıfı:

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 )

Parametreler

  • name — Optimizer adı

Yükseltilen

ValueError

  • ValueError — Optimizer bulunamazsa

Bir optimizör için OptimInfo alın.

Parametre grup işlevleri

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 )

Katman bazlı lr azaltma ve ağırlık azaltması için parametre grupları BEiT'ye dayanır: https://github.com/microsoft/unilm/blob/master/beit/optim_factory.py#L58

timm.optim.auto_group_layers

< >

( modellayers_per_group = 12num_groups = None )

Optimizatör Sınıfları

sınıf 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 )

Parametreler

  • params (iterable) — optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin iterable'ı
  • lr (float, isteğe bağlı) — öğrenme oranı (varsayılan: 1e-3)
  • betas (Tuple[float, float], optional) — gradyanın ve karesinin hareketli ortalamalarının hesaplanmasında kullanılan katsayılar (varsayılan: (0.9, 0.999))
  • eps (float, isteğe bağlı) — sayısal kararlılığı artırmak için paydaya eklenen terim (varsayılan: 1e-16)
  • weight_decay (float, isteğe bağlı) — ağırlık çürümesi (L2 cezası) (varsayılan: 0)
  • amsgrad (boolean, isteğe bağlı) — On the Convergence of Adam and Beyond_ makalesindeki bu algoritmanın AMSGrad varyantının kullanılıp kullanılmayacağı (varsayılan: False)
  • decoupled_decay (boolean, isteğe bağlı) — (varsayılan: True) True olarak ayarlanırsa, optimizör AdamW'daki gibi decoupled weight decay kullanır
  • fixed_decay (boolean, isteğe bağlı) — (varsayılan: False) Ağırlıkdecouple True olarak ayarlandığında kullanılır. fixed_decay == True olduğunda, ağırlık çürümesi şu şekilde uygulanır: $W{new} = W{old} - W{old} \times decay$. fixeddecay == False olduğunda, ağırlık çürümesi şu şekilde uygulanır: $W{new} = W{old} - W{old} \times decay \times lr$. Bu durumda, ağırlık çürüme oranının öğrenme hızıyla (lr) birlikte azaldığına dikkat edin.
  • rectify (boolean, isteğe bağlı) — (varsayılan: True) True olarak ayarlanırsa, RAdam'a benzer şekilde düzeltilmiş güncelleme yapılır
  • degenerated_to_sgd (boolean, optional) (varsayılan —True) True olarak ayarlanırsa, gradyan varyansı yüksek olduğunda SGD güncellemesi yapılır
  • foreach (boolean, isteğe bağlı) — varsayılan olarak (None) desteklenmediği durumlarda kullanılmadıkça foreach (çoklu tensör) uygulamasını kullanır

AdaBelief algoritmasını uygular. PyTorch'teki Adam'dan değiştirilmiştir

reference: AdaBelief Optimizer, gözlemlenen gradyanlardaki güvene göre adım boyutlarını uyarlar, NeurIPS 2020

Önerilen hiperparametrelerin tam tablosu için https://github.com/juntang-zhuang/Adabelief-Optimizer’ adresine bakın. Örneğin EfficientNet için train/args bu gistlere bakın

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 algoritmasını uygular.

Bu uygulama şuna dayanmaktadır: Adafactor: Adaptive Learning Rates with Sublinear Memory Cost (bkz. https://arxiv.org/abs/1804.04235)

Bu optimizörün, scale_parameter, relative_step ve warmup_init seçeneklerine bağlı olarak öğrenme hızını içsel olarak ayarladığını unutmayın.

lr ayarlandığında manuel (dış) öğrenme oranı zamanlaması kullanılır (relative_step bu durumda False olur). Bu uygulamada scale_parameter ve warmup_init'in yalnızca göreli adım öğrenme oranına (lr=None) uygulandığına dikkat edin; fairseq / HF Transformers'tan farklı olarak, parametre RMS ölçeklemesi dış öğrenme oranına uygulanmaz.

Ags: params: optimize edilecek parametrelerin iterable'i veya parametre gruplarını tanımlayan sözlükler lr: harici öğrenme oranı eps: kare gradyan ve parametre ölçeği için sırasıyla düzenleme sabitleri eps_scale: parametre ölçeği için sırasıyla düzenleme sabitleri clip_threshold: nihai gradyan güncellemesinin karekök ortalama kare (root-mean-square) eşiği decay_rate: kare gradyanın hareketli ortalamalarının hesaplanmasında kullanılan katsayı beta1: gradyanın hareketli ortalamalarının hesaplanmasında kullanılan katsayı weight_decay: ağırlık çürümesi (weight decay) scale_parameter: True ise, göreli adım öğrenme oranı parametrenin karekök ortalama kare (root-mean-square) değeriyle ölçeklenir warmup_init: zamana bağlı öğrenme oranı hesabı, ısınma başlatmasının (warm-up initialization) kullanılıp kullanılmadığına bağlıdır

adım

< >

( closure = None )

Parametreler

  • closure (callable, optional) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 )

BigVision'ın Adafactor varyantının hem tek hem de çoklu tensör uygulamalarına sahip PyTorch uygulaması.

Ross Wightman tarafından https://github.com/google-research/big_vision adresinden uyarlanmıştır

sınıf 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 )

Parametreler

  • params (iterable) — optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin iterable'ı
  • lr (float, isteğe bağlı) — öğrenme oranı (varsayılan: 0.1)
  • betas ((float, float), optional) — gradyanın ve kare hessian izinin hareketli ortalamalarının hesaplanmasında kullanılan katsayılar (varsayılan: (0.9, 0.999))
  • eps (float, isteğe bağlı) — sayısal kararlılığı artırmak için paydaya eklenen terim (varsayılan: 1e-8)
  • weight_decay (float, isteğe bağlı) — ağırlık çürümesi (L2 cezası) (varsayılan: 0.0)
  • hessian_power (float, isteğe bağlı) — hessian izinin üssü (varsayılan: 1.0)
  • update_each (int, isteğe bağlı) — hesaplama süresini kısaltmak için hessian izi yaklaşımını yalnızca bu sayıda adım sonrasında hesapla (varsayılan: 1)
  • n_samples (int, isteğe bağlı) — hessian izinin yaklaşık hesaplanması için z'in kaç kez örneklenmesi gerektiğini belirtir (varsayılan: 1)

Implements the AdaHessian algorithm from “ADAHESSIAN: An Adaptive Second OrderOptimizer for Machine Learning”

get_params

< >

( )

Tüm param_groups içindeki gradyanlara sahip tüm parametreleri alır

set_hessian

< >

( )

Hessian izinin Hutchinson yaklaşımını hesaplar ve her eğitilebilir parametre için biriktirir.

adım

< >

( closure = None )

Parametreler

  • closure (callable, optional) — modeli yeniden değerlendiren ve kaybı döndüren bir kapanış (varsayılan — None)

Tek bir optimizasyon adımı gerçekleştirir.

zero_hessian

< >

( )

Biriken hessian izlerini sıfırlar.

sınıf timm.optim.AdamP

< >

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

sınıf 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 )

Parametreler

  • params — optimize edilecek parametrelerin iterablesi veya parametre gruplarını tanımlayan sözlükler
  • lr — öğrenme oranı
  • betas — gradyanın ve karesinin hareketli ortalamalarının hesaplanmasında kullanılan katsayılar
  • eps — sayısal kararlılığı artırmak için paydaya eklenen terim
  • weight_decay — ağırlık çürüme katsayısı
  • amsgrad — bu algoritmanın On the Convergence of Adam and Beyond makalesindeki AMSGrad varyantının kullanılıp kullanılmayacağı
  • caution — AdamW kullanırken dikkatli olun
  • corrected_weight_decay — düzeltilmiş ağırlık çürümesini uygula (lr**2 / max_lr)
  • maximize — minimize etmek yerine, amaç fonksiyonuna göre parametreleri maksimize et
  • foreach — optimizörün foreach uygulamasının kullanılıp kullanılmadığı. Kullanıcı tarafından belirtilmezse (yani foreach None ise), CUDA üzerinde genel olarak daha hızlı olduğu için for döngüsü uygulaması yerine foreach kullanmayı deneyeceğiz.
  • capturable — bu örneğin bir CUDA grafiğinde yakalanmasının güvenli olup olmadığı. True değerini geçmek, grafik dışı performansı olumsuz etkileyebilir; bu nedenle bu örneği grafik yakalama amacıyla kullanmayacaksanız, değeri False olarak bırakın.
  • clipping_threshold — RMS güncelleme kırpma eşiği (StableAdamW, https://arxiv.org/abs/2304.13013), güncelleme, rms'in grad / (sqrt(v_hat) + eps) RMS'i olduğu 1 / max(1, rms / clipping_threshold) ile ölçeklenir. İkinci moment tahminine göre ani bir gradyan artışı olan parametrelerin güncellemesini sönümler. Makaleye göre 1.0, varsayılan olan None devre dışı bırakır. Adafactor'da olduğu gibi, ayrık ağırlık çürümesi kırpılmaz (StableAdamW, çürümeyi kırpılmış lr ile de ölçekler).

AdamW algoritmasını uygular.

NOT: Bu uygulama, torch.optim.AdamW lehine kullanımdan kaldırılmış olup referans olarak kalmaktadır

Referanslar:

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 )

Parametreler

  • params — Optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin yinelebilir (iterable) listesi.
  • lr — Öğrenme oranı.
  • betas — Birinci ve ikinci dereceden momentler için kullanılan katsayılar.
  • eps — Sayısal kararlılığı artırmak için paydaya eklenen terim.
  • weight_decay — Ayrıştırılmış ağırlık çürümesi (L2 cezası)
  • no_prox — Ağırlık çürümesi nasıl uygulanır
  • caution — ‘Cautious Optimizers’ içinden caution'u etkinleştirin
  • foreach — True ise torch._foreach uygulaması kullanılır. Daha hızlıdır ancak hafifçe daha fazla bellek kullanır.

Adan'ın bir pytorch varyantını uygular.

Adan, Adan: Adaptive Nesterov Momentum Algorithm for Faster Optimizing Deep Models https://arxiv.org/abs/2208.06677 makalesinde önerilmiştir.

adım

< >

( closure = None )

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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: Optimal Hızda Herhangi Bir β2 ile Yakınsayabilen Değiştirilmiş Adam: https://arxiv.org/abs/2411.02853

adım

< >

( closure = None )

Parametreler

  • closure (Callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirin.

sınıf 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 )

Parametreler

  • params — Optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin yinelebilir (iterable) listesi.
  • lr — Öğrenme oranı.
  • momentum — Momentum parametresi.
  • weight_decay — Ağırlık çürümesi.
  • preconditioner_update_probability — Ön koşullandırıcının güncellenme olasılığı. None ise, 4000 adıma kadar 1.0'dan 0.03'e soğuyan bir zamanlamaya varsayılan olarak ayarlanır.
  • max_size_triangular — boyutun ön koşullandırıcısının üçgen olması için maksimum boyut.
  • min_ndim_triangular — Katmanın üçgen ön koşullandırıcılar (preconditioner) kullanabilmesi için sahip olması gereken minimum boyut sayısı.
  • memory_save_mode — ‘one_diag’, ‘smart_one_diag’ veya ‘all_diag’, varsayılan olarak None tüm ön koşullandırıcıları üçgen yapmak için, ‘one_diag’ her katman için en büyük veya son boyutu çapraz olarak ayarlar ve ‘all_diag’ tüm ön koşullandırıcıları çapraz olarak ayarlar.
  • momentum_into_precond_update — ham gradyanlar yerine momentumun preconditioner güncellemesine gönderilip gönderilmeyeceğini belirtir.
  • mu_dtype — Momentum biriktiricisinin Dtype değeri.
  • precond_dtype — Ön koşullandırıcının veri tipi.
  • decoupled_decay — AdamW tarzı ayrıştırılmış ağırlık çürümesi
  • corrected_weight_decay — decoupled_decay kullanırken düzeltilmiş ağırlık çürümesi uygulayın (lr**2 / max_lr)
  • flatten — Yüksek rütbeli parametreler için tamamen ifadelere güvenmek yerine boyutları düzleştirir
  • flatten_start_dim — Düzleştirme aralığının başlangıcı, varsayılan olarak 2. ConvNets için iyi bir denge gibi görünüyor.
  • flatten_end_dim — Düzleştirme aralığının sonu, varsayılan olarak -1'dir.
  • stochastic_weight_decay — Ağırlık sönümlemesinin rastgele modülasyonunu etkinleştirir
  • deterministic — Kaydetme / yükleme (devam etme) sırasında deterministik davranış. FIXME yavaş, üzerinde çalışılması gerekiyor

https://github.com/lixilinx/psgd_torch adresindeki PSGD Kron'u uygular.

sınıf 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 )

Parametreler

  • params — Optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin yinelebilir (iterable) listesi.
  • lr — Öğrenme oranı
  • betas — Gradyan ve normunun hareketli ortalamalarının hesaplanmasında kullanılan katsayılar.
  • eps — Sayısal kararlılığı artırmak için paydaya eklenen terim.
  • weight_decay — Ağırlık çürümesi
  • grad_averaging — Gradyan ortalamalarının hesaplanırken gradyana (1-beta2) uygulanıp uygulanmayacağı.
  • max_grad_norm — Küresel grad normunu kırpma işlemi için kullanılan değer.
  • trust_clip — LAMBC güven oranı kırpma işlevini etkinleştirir.
  • always_adapt — 0.0 ağırlık çürümesi parametresine uyarlama öğrenme hızı uygulayın.
  • caution — Dikkatli olun.
  • decoupled — ayrık ağırlık çürümesi uygula
  • corrected_weight_decay — decoupled_decay kullanırken düzeltilmiş ağırlık çürümesini (lr**2 / max_lr) uygular
  • foreach — varsayılan olarak (None) kullanılır, desteklenmediği durumlarda hariç; foreach (çoklu tensör) uygulamasını kullanır

apex.optimizers.FusedLAMB'daki FuseLAMB (NvLamb varyantı) optimizörünün saf pytorch varyantını uygular. referans: https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/Transformer-XL/pytorch/lamb.py

LAMB şu makalede önerilmiştir:

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 )

Parametreler

  • foreach — varsayılan olarak (None) kullanılır, desteklenmediği durumlarda hariç (bkz. laprop()); foreach (çoklu tensör) uygulamasını kullanır

LaProp Optimizer

Makale: LaProp: Adam'da Momentum ve Uyarlanabilirliği Ayırma, https://arxiv.org/abs/2002.04839

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf timm.optim.Lars

< >

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

Parametreler

  • params (iterable) — optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin iterable'ı.
  • lr (float, isteğe bağlı) — öğrenme oranı (varsayılan: 1.0).
  • momentum (float, isteğe bağlı) — momentum faktörü (varsayılan: 0)
  • weight_decay (float, isteğe bağlı) — ağırlık çürümesi (L2 cezası) (varsayılan: 0)
  • dampening (float, isteğe bağlı) — momentum için sönümleme (varsayılan: 0)
  • nesterov (bool, isteğe bağlı) — Nesterov momentumunu etkinleştirir (varsayılan: False)
  • trust_coeff (float) — uyarlama lr / trust_ratio hesaplama için güven katsayısı (varsayılan: 0.001)
  • eps (float) — bölüm paydası için eps (varsayılan: 1e-8)
  • trust_clip (bool) — LARC güven oranı kırpma işlevini etkinleştirir (varsayılan: False)
  • always_adapt (bool) — LARS LR adapt'ini her zaman uygula, aksi halde yalnızca group weight_decay != 0 olduğunda uygula (varsayılan: False)
  • foreach (bool, isteğe bağlı) — varsayılan olarak (None) kullanılır, desteklenmediği durumlarda hariç; foreach (çoklu tensör) uygulamasını kullanır

PyTorch için LARS

Makale: Large batch training of Convolutional Networks - https://arxiv.org/pdf/1708.03888.pdf

adım

< >

( closure = None )

Parametreler

  • closure (callable, optional) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 algoritmasını uygular.

adım

< >

( closure = None )

Parametreler

  • closure — Modeli yeniden değerlendiren ve kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf timm.optim.Lookahead

< >

( base_optimizeralpha = 0.5k = 6 )

sınıf timm.optim.MADGRAD

< >

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

Parametreler

  • params (iterable) — Optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin iterable'ı.
  • lr (float) — Öğrenme oranı (varsayılan: 1e-2).
  • momentum (float) — Momentum value in the range [0,1) (default: 0.9).
  • weight_decay (float) — Ağırlık çürümesi, yani L2 cezası (varsayılan: 0).
  • eps (float) — Sayısal kararlılığı artırmak için kök işleminin dışındaki paydaya eklenen terim. (varsayılan: 1e-6).

MADGRAD_: Stokastik Optimizasyon için Momentumlaştırılmış, Uyarlanabilir, Çift Ortalama Gradyan Yöntemi.

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

MADGRAD, SGD veya Adam yerine kullanılabilen genel amaçlı bir optimizördür ve daha hızlı yakınsayabilir, daha iyi genelleme yapabilir. Şu anda yalnızca GPU desteklenmektedir. Genellikle, SGD veya Adam için kullanılan aynı öğrenme oranı zamanlaması kullanılabilir. Genel öğrenme oranı, bu iki yöntemle karşılaştırılabilir değildir ve hiperparametre taraması ile belirlenmelidir.

MADGRAD, diğer yöntemlere kıyasla daha az ağırlık çürümesi gerektirir, çoğu zaman sıfıra kadar inebilir. SGD veya Adam'ın beta1'i için kullanılan momentum değerleri burada da işe yarayacaktır.

Seyrek problemlerde hem weight_decay hem de momentum 0 olarak ayarlanmalıdır.

adım

< >

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

Parametreler

  • closure (callable, optional) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 Optimizer

Makale: MARS: Büyük Modellerin Eğitiminde Varyans Azaltmanın Gücünü Serbest Bırakma https://arxiv.org/abs/2411.10438

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 - Newton-schulz ile Ortogonalize Edilmiş MomentUm

2D+ parametreler (ağırlık matrisleri) için Muon'u, 1D parametreler (yapılar, normlar) için AdamW ile ve ‘use_fallback=True’ olarak ayarlanmış (uyumluluk için ‘use_muon=False’) parametre gruplarıyla birleştirir.

İki algoritmayı destekler:

  • “muon”: Momentum + orthogonalization ile standart Muon algoritması
  • “adamuon”: Adam benzeri uyarlama ölçeklendirmesi için ortogonalize edilmiş yönlere eleman bazlı ikinci an tahminini ekleyen AdaMuon algoritması

adım

< >

( closure = None )

Tek bir optimizasyon adımı gerçekleştirir.

sınıf timm.optim.NAdamLegacy

< >

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

Parametreler

  • params (iterable) — optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin iterable'ı
  • lr (float, isteğe bağlı) — öğrenme oranı (varsayılan: 2e-3)
  • betas (Tuple[float, float], optional) — gradyanın ve karesinin hareketli ortalamalarının hesaplanmasında kullanılan katsayılar
  • eps (float, isteğe bağlı) — sayısal kararlılığı artırmak için paydaya eklenen terim (varsayılan: 1e-8)
  • weight_decay (float, isteğe bağlı) — ağırlık çürümesi (L2 cezası) (varsayılan: 0)
  • schedule_decay (float, isteğe bağlı) — momentum zamanlaması azalması (varsayılan: 4e-3)

Nadam algoritmasını (Nesterov momentumuna dayalı bir Adam varyantı) uygular.

NOT: Bu uygulama, torch.optim.NAdam lehine kullanımdan kaldırılmış olup referans olarak kalmaktadır

Incorporating Nesterov Momentum into Adam__ makalesinde önerilmiştir.

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

Orijinal kaynağı: https://github.com/pytorch/pytorch/pull/1408 NOT: Potansiyel sorunlar içerebilir ancak bazı problemlerde iyi çalışır.

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf 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 )

Parametreler

  • params — optimize edilecek parametrelerin iterablesi veya parametre gruplarını tanımlayan sözlükler
  • lr — öğrenme oranı
  • betas — gradyanın ve karesinin hareketli ortalamalarının hesaplanmasında kullanılan katsayılar
  • eps — sayısal kararlılığı artırmak için paydaya eklenen terim
  • weight_decay — ağırlık çürüme katsayısı
  • caution — dikkat modunu etkinleştir
  • corrected_weight_decay — düzeltilmiş ağırlık çürümesini uygula (lr**2 / max_lr)
  • maximize — minimize etmek yerine, amaç fonksiyonuna göre parametreleri maksimize et
  • foreach — optimizörün foreach uygulamasının kullanılıp kullanılmadığı. Belirtilmezse (None), CUDA'da (foreach çekirdeklerine sahip cihazlarda) genel olarak daha hızlı olduğu için foreach uygulaması kullanılır.
  • capturable — bu örneğin bir CUDA grafında yakalanmasının güvenli olup olmadığı
  • clipping_threshold — RMS güncelleme kırpma eşiği (StableAdamW, https://arxiv.org/abs/2304.13013), güncelleme, rms'in grad / (sqrt(v_hat) + eps) RMS'i olduğu 1 / max(1, rms / clipping_threshold) ile ölçeklenir. İkinci moment tahminine göre ani bir gradyan artışı olan parametrelerin güncellemesini sönümler. Makaleye göre 1.0, varsayılan olan None devre dışı bırakır. Adafactor'da olduğu gibi, ayrık ağırlık çürümesi kırpılmaz (StableAdamW, çürümeyi kırpılmış lr ile de ölçekler).

NAdamW algoritmasını uygular.

NAdam algoritmasının uygulaması için https://arxiv.org/abs/1910.05446 adresindeki Tablo 1'e bakın (kod içindeki bir yorum da NAdamW ile AdamW arasındaki tek farkı vurgular).

Algoritma ile ilgili daha fazla ayrıntı için

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf timm.optim.NvNovoGrad

< >

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

Parametreler

  • params (iterable) — optimize edilecek parametrelerin veya parametre gruplarını tanımlayan sözlüklerin iterable'ı
  • lr (float, isteğe bağlı) — öğrenme oranı (varsayılan: 1e-3)
  • betas (Tuple[float, float], optional) — gradyanın ve karesinin hareketli ortalamalarının hesaplanmasında kullanılan katsayılar (varsayılan: (0.95, 0.98))
  • eps (float, isteğe bağlı) — sayısal kararlılığı artırmak için paydaya eklenen terim (varsayılan: 1e-8)
  • weight_decay (float, isteğe bağlı) — ağırlık çürümesi (L2 cezası) (varsayılan: 0)
  • grad_averaging — gradyan ortalaması
  • amsgrad (boolean, isteğe bağlı) — On the Convergence of Adam and Beyond_ makalesindeki bu algoritmanın AMSGrad varyantının kullanılıp kullanılmayacağı (varsayılan: False)
  • decoupled_decay — ağırlık çürümesini (weight decay) momentum güncellemesinden önce normalize edilmiş gradyana eklemek yerine (makalede belirtildiği gibi) doğrudan ağırlıklara uygulayın (adım başına lr * weight_decay)
  • corrected_weight_decay — decoupled_decay True olduğunda düzeltilmiş ağırlık çürümesi (lr**2 / max_lr) uygular

Novograd algoritmasını uygular.

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendiren bir kapanış
  • and kaybı döndürür. —

Tek bir optimizasyon adımı gerçekleştirir.

sınıf timm.optim.RAdamLegacy

< >

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

PyTorch RAdam optimizatörü

NOT: Bu uygulama, torch.optim.AdamW lehine kullanımdan kaldırılmış olup referans olarak kalmaktadır

sınıf 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 )

Parametreler

  • params — optimize edilecek parametrelerin iterablesi veya parametre gruplarını tanımlayan sözlükler
  • lr — öğrenme oranı
  • momentum — momentum faktörü
  • alpha — yumuşatma (azalma) sabiti
  • eps — sayısal kararlılığı artırmak için paydaya eklenen terim
  • centered — True ise, merkezlenmiş RMSProp hesaplanır; gradyan, varyansının bir tahminiyle normalize edilir
  • weight_decay — ağırlık çürümesi (L2 cezası) (varsayılan: 0)
  • decoupled_decay — https://arxiv.org/abs/1711.05101'de belirtildiği üzere ayrıştırılmış ağırlık çürümesi
  • corrected_weight_decay — decoupled_decay True olduğunda düzeltilmiş ağırlık çürümesi (lr**2 / max_lr) uygular
  • lr_in_momentum — öğrenme oranı ölçeklendirmesi, Tensorflow varsayılanlarına göre momentum tamponu güncellemesine dahildir
  • caution — dikkatli olun
  • foreach — varsayılan olarak (None) kullanılır, desteklenmediği durumlarda hariç (bkz. rmsprop_tf()); foreach (çoklu tensör) uygulamasını kullanır

RMSprop algoritmasını uygular (TensorFlow tarzı epsilon)

NOT: Bu, PyTorch RMSprop'ün doğrudan kopyala-yapıştır halidir; eps sqrt'tan önce uygulanmış ve hiper-parametrelerin eşleşmesi için Tensorflow'a daha yakın olması adına birkaç başka değişiklik yapılmıştır.

Önemli değişiklikler şunlardır:

  1. Karekök içinde uygulanan Epsilon
  2. square_avg birler ile başlatıldı
  3. Momentum tamponunda biriken güncellemenin LR ölçeklemesi

G. Hinton tarafından dersinde önerilmiştir.

Merkezli versiyon ilk olarak Generating Sequences With Recurrent Neural Networks makalesinde yer alır.

adım

< >

( closure = None )

Parametreler

  • closure (callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

sınıf timm.optim.SGDP

< >

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

sınıf 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 )

adım

< >

( closure = None )

Parametreler

  • closure (Callable, isteğe bağlı) — Modeli yeniden değerlendirip kaybı döndüren bir kapanış.

Tek bir optimizasyon adımı gerçekleştirir.

Update on GitHub