timm documentation
Optimizasyon
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:
--optoptimizatörü seçer.--lröğrenme oranını ayarlar.--weight-decayağırlık çürümesini ayarlar.--momentummomentum değerini ayarlar.--opt-eps, epsilon (eps) değerini ayarlar.--opt-betas, beta katsayılarını (betas) ayarlar.--layer-decaykatman 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ştirici | Anlam | Örnekler |
|---|---|---|
c öneki | Dikkatli varyant, güncelleme işareti gradyanla uyuşmadığı yerde maskeleme yapılır (Cautious Optimizers) | cadamw, clion, cmars, cadopt |
w son eki | Varsayı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 soneki | Dü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 öneki | Nesterov momentum (SGD, LARS ve Muon aileleri) | nesterov, nlars, nmuon, nadamuon |
lookahead_ öneki | Optimizatörü Lookahead içine sarın | lookahead_adamw |
fused öneki | NVIDIA Apex birleşik uygulaması (apex gerektirir) | fusedadamw, fusedlamb |
bnb öneki | bitsandbytes 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
| İsimler | Uygulama | Notlar |
|---|---|---|
adamw, adam, nadam, radam, radamw, adamax, adadelta, adagrad, rmsprop, sgd, momentum, nesterov | torch.optim | |
adamwlegacy, adamc, cadamw, cadamc | AdamWLegacy | AdamW dikkatli kullanın, düzeltilmiş azalma, güncelleme kırpma, capturable |
nadamw, nadamc, cnadamw, cnadamc | NAdamW | Nesterov momentum ile AdamW (MLCommons algoritmik-etkinlik formu) |
adopt, adoptw, adoptc, cadopt, cadoptw, cadoptc | Adopt | Herhangi bir β2 için yakınsayan Adam varyantı |
adan, adanw, cadan, cadanw | Adan | Adaptif Nesterov momentum |
adabelief, radabelief | AdaBelief | radabelief, RAdam tarzı düzeltme ekler |
adafactor, cadafactor | Adafactor | fairseq Adafactor, lr=None olduğunda göreli adım boyutu |
adafactorbv, adafactorbvc, cadafactorbv, cadafactorbvc | AdafactorBigVision | Büyük Görüntü Adafactor, faktörlü ikinci anlar, düşük hassasiyet momentumu, güncelleme kırpma |
adamp, cadamp, sgdp, csgdp | AdamP, SGDP | Ölçekten bağımsız ağırlıklar için güncellemenin izdüşümü |
adahessian | Adahessian | İkinci dereceden, bir kapanış gerektirir (is_second_order) |
kron, kronw, kronc | Kron | Kronecker-faktörlü ön koşullandırıcı ile PSGD |
lamb, lambc, lambw, lambcw, lambcd, clamb, clambw | Lamb | Katman bazlı adaptif momentler, trust_clip varyantları (lambc, lambcw) |
laprop, lapropc, claprop | LaProp | Momentum ve adaptiflik ayrı |
lars, larc, nlars, nlarc | Lars | Katman bazlı adaptif oran ölçekleme, trust_clip varyantları (larc, nlarc) |
lion, lionc, clion, clionc | Lion | Geliştirilmiş işaret momentumu |
madgrad, madgradw | MADGRAD | Momentum tabanlı çift ortalama |
mars, cmars | Mars | Varyans azaltma, AdamW veya Lion tarzı güncelleme |
muon, nmuon, adamuon, nadamuon | Muon | 2D+ ağırlıklar için Newton-Schulz ortogonalize edilmiş momentum, 1D parametreler için AdamW / NAdamW yedeği |
novograd, novogradw, novogradc | NvNovoGrad | Katman bazlı normalize edilmiş anlar |
rmsproptf, rmsproptfw, rmsproptfc, crmsproptf | RMSpropTF | TensorFlow işlemlerin sıralaması ve eps işleme, momentum tamponuna katlanmış lr |
sgdw, nesterovw, sgdc, csgdw, csgdc | SGDW | Ayrıştırılmış ağırlık bozulması ile SGD |
nadamlegacy, radamlegacy | NAdamLegacy, RAdamLegacy | torch.optim tarafından yerini alan referans uygulamaları |
fused*, bnb* | NVIDIA Apex, bitsandbytes | Paket 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(sonucekli adlar) yerinelr² / max_lrile 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.pybunu yapar). Her parametre grubunda tutulur (max_lr_snapshot) ve optimizör durumuyla birlikte kaydedilir / geri yüklenir.decoupled_decay(veyadecoupled), varsayılan olarak bağlı L2 çürümesi kullanan optimizörleri AdamW tarzı çürümeye (wson 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ğincapturableolmadan birlrtensörü veya gerekli_foreach_maximum_aşırı yüklemesi olmayan bir PyTorch sürümündecaution)torch.optimile 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,0parç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.compileve CUDA grafikleriyle kullanım için yerinde güncellenen bir zaman çizelgesi tarafından güncellenen, 0 boyutlu bir tensör olarak verilenlrdeğerini kabul eder.clipping_threshold(AdamWLegacy, NAdamW, AdafactorBigVision) güncellemeyi RMS'ine göre kırpıyor:update / max(1, rms / threshold), buradarmsikinci an normalize edilmiş gradyanın RMS'idir, tensör başına (StableAdamW, Adafactor). Makalelerdeki gibi1.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.maximizehedefi 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ı
float32olarak tutar. - AdafactorBigVision, momentum değerini azaltılmış hassasiyette (
momentum_dtype) tutar. - Kron'un ayrı
mu_dtype/precond_dtypeseç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
< source >( 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:
- param_group_fn sağlanırsa, yalnızca bu kullanılacaktır
- layer_decay sağlanırsa, katman bazlı gruplar oluşturulur
- weight_decay > 0 ve filter_bias_and_bn True ise, ağırlık çürümesi grupları oluşturulur
- Aksi takdirde, tüm parametreler tek bir grupta olacaktır
timm.optim.list_optimizers
< source >( 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
< source >( 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:
timm.optim.get_optimizer_info
< source >( name: str )
Bir optimizör için OptimInfo alın.
Parametre grup işlevleri
timm.optim.param_groups_weight_decay
< source >( 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
< source >( 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
Optimizatör Sınıfları
sınıf timm.optim.AdaBelief
< source >( 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
- train_script bağlantısı: https://gist.github.com/juntang-zhuang/0a501dd51c02278d952cf159bc233037
- args.yaml bağlantısı: https://gist.github.com/juntang-zhuang/517ce3c27022b908bb93f78e4f786dc3
adım
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Adafactor
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.AdafactorBigVision
< source >( 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
< source >( 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”
Tüm param_groups içindeki gradyanlara sahip tüm parametreleri alır
Hessian izinin Hutchinson yaklaşımını hesaplar ve her eğitilebilir parametre için biriktirir.
adım
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
Biriken hessian izlerini sıfırlar.
sınıf timm.optim.AdamP
< source >( 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
< source >( 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 Beyondmakalesindeki 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:
- Adam: A Method for Stochastic Optimization: https://arxiv.org/abs/1412.6980
- Ayrıştırılmış Ağırlık Sönümleme Düzenlemesi: https://arxiv.org/abs/1711.05101
- Adam ve Ötesi Yakınsaması Üzerine: https://openreview.net/forum?id=ryQu7f-RZ
adım
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Adan
< source >( 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.
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Adopt
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirin.
sınıf timm.optim.kron.Kron
< source >( 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
< source >( 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:
- Derin Öğrenme için Büyük Toplu Optimizasyon - BERT'i 76 dakikada eğitmek: https://arxiv.org/abs/1904.00962
- Adam ve Ötesi Yakınsaması Üzerine: https://openreview.net/forum?id=ryQu7f-RZ
adım
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.LaProp
< source >( 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 )
LaProp Optimizer
Makale: LaProp: Adam'da Momentum ve Uyarlanabilirliği Ayırma, https://arxiv.org/abs/2002.04839
adım
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Lars
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Lion
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.MADGRAD
< source >( 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
< source >( closure: typing.Optional[typing.Callable[[], float]] = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Mars
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.Muon
< source >( 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ı
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.NAdamLegacy
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.NAdamW
< source >( 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
- Ayrıştırılmış Ağırlık Sönümleme Düzenlemesi: https://arxiv.org/abs/1711.05101
- Adam ve Ötesi Yakınsaması Üzerine: https://openreview.net/forum?id=ryQu7f-RZ
adım
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.NvNovoGrad
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.RAdamLegacy
< source >( 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
< source >( 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 —
Trueise, 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:
- Karekök içinde uygulanan Epsilon
- square_avg birler ile başlatıldı
- 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.
sınıf timm.optim.SGDP
< source >( paramslr = torch.optim.optimizer.requiredmomentum = 0dampening = 0weight_decay = 0nesterov = Falseeps = 1e-08delta = 0.1wd_ratio = 0.1caution = False )
sınıf timm.optim.SGDW
< source >( 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
< source >( closure = None )
Tek bir optimizasyon adımı gerçekleştirir.