pytorch-optimizer 3.1.1__tar.gz → 3.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/PKG-INFO +4 -3
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/README.md +2 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pyproject.toml +11 -11
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/__init__.py +2 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/rex.py +1 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/a2grad.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adabelief.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adabound.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adadelta.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adafactor.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adahessian.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adai.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adalite.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adam_mini.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adamax.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adamg.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adamod.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adamp.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adams.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adamw.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adan.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adanorm.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adapnm.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adashift.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/adasmooth.py +1 -0
- pytorch_optimizer-3.1.2/pytorch_optimizer/optimizer/ademamix.py +149 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/aggmo.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/aida.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/alig.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/amos.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/apollo.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/avagrad.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/came.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/dadapt.py +5 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/diffgrad.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/fadam.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/fromage.py +1 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/galore.py +6 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/gravity.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/grokfast.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/kate.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/lamb.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/lars.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/lion.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/lomo.py +2 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/lookahead.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/madgrad.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/msvag.py +7 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/nero.py +7 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/novograd.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/padam.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/pid.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/pnm.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/prodigy.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/qhadam.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/qhm.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/radam.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/ranger.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/ranger21.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/rotograd.py +1 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/schedulefree.py +2 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/sgd.py +4 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/sgdp.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/shampoo.py +2 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/shampoo_utils.py +1 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/sm3.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/sophia.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/srmm.py +8 -1
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/swats.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/tiger.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/trac.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/yogi.py +1 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/LICENSE +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/base/__init__.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/base/exception.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/base/optimizer.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/base/scheduler.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/base/types.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/__init__.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/bi_tempered.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/cross_entropy.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/dice.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/f1.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/focal.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/jaccard.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/ldam.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/lovasz.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/loss/tversky.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/__init__.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/chebyshev.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/proportion.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/wsd.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/__init__.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/agc.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/fp16.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/gc.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/pcgrad.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/sam.py +0 -0
- {pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/utils.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pytorch_optimizer
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.2
|
|
4
4
|
Summary: optimizer & lr scheduler & objective function collections in PyTorch
|
|
5
5
|
Home-page: https://github.com/kozistr/pytorch_optimizer
|
|
6
6
|
License: Apache-2.0
|
|
7
|
-
Keywords: pytorch,deep-learning,optimizer,lr scheduler,A2Grad,ASGD,AccSGD,AdaBelief,AdaBound,AdaDelta,AdaFactor,AdaMax,AdamG,AdaMod,AdaNorm,AdaPNM,AdaSmooth,AdaHessian,Adai,Adalite,AdaLomo,AdamMini,AdamP,AdamS,Adan,AggMo,Aida,AliG,Amos,Apollo,AvaGrad,bSAM,CAME,DAdaptAdaGrad,DAdaptAdam,DAdaptAdan,DAdaptSGD,DAdaptLion,DiffGrad,FAdam,Fromage,GaLore,Gravity,GrokFast,GSAM,Kate,Lamb,LARS,Lion,LOMO,Lookahead,MADGRAD,MSVAG,Nero,NovoGrad,PAdam,PCGrad,PID,PNM,Prodigy,QHAdam,QHM,RAdam,Ranger,Ranger21,RotoGrad,SAM,ScheduleFreeSGD,ScheduleFreeAdamW,SGDP,Shampoo,ScalableShampoo,SGDW,SignSGD,SM3,SopihaH,SRMM,StableAdamW,SWATS,Tiger,TRAC,WSAM,Yogi,BCE,BCEFocal,Focal,FocalCosine,SoftF1,Dice,LDAM,Jaccard,Bi-Tempered,Tversky,FocalTversky,LovaszHinge,bitsandbytes,WSD,QGaLore
|
|
7
|
+
Keywords: pytorch,deep-learning,optimizer,lr scheduler,A2Grad,ASGD,AccSGD,AdaBelief,AdaBound,AdaDelta,AdaFactor,AdaMax,AdamG,AdaMod,AdaNorm,AdaPNM,AdaSmooth,AdEMAMix,AdaHessian,Adai,Adalite,AdaLomo,AdamMini,AdamP,AdamS,Adan,AggMo,Aida,AliG,Amos,Apollo,AvaGrad,bSAM,CAME,DAdaptAdaGrad,DAdaptAdam,DAdaptAdan,DAdaptSGD,DAdaptLion,DiffGrad,FAdam,Fromage,GaLore,Gravity,GrokFast,GSAM,Kate,Lamb,LARS,Lion,LOMO,Lookahead,MADGRAD,MSVAG,Nero,NovoGrad,PAdam,PCGrad,PID,PNM,Prodigy,QHAdam,QHM,RAdam,Ranger,Ranger21,RotoGrad,SAM,ScheduleFreeSGD,ScheduleFreeAdamW,SGDP,Shampoo,ScalableShampoo,SGDW,SignSGD,SM3,SopihaH,SRMM,StableAdamW,SWATS,Tiger,TRAC,WSAM,Yogi,BCE,BCEFocal,Focal,FocalCosine,SoftF1,Dice,LDAM,Jaccard,Bi-Tempered,Tversky,FocalTversky,LovaszHinge,bitsandbytes,WSD,QGaLore
|
|
8
8
|
Author: kozistr
|
|
9
9
|
Author-email: kozistr@gmail.com
|
|
10
10
|
Maintainer: kozistr
|
|
@@ -49,7 +49,7 @@ Description-Content-Type: text/markdown
|
|
|
49
49
|
|
|
50
50
|
**pytorch-optimizer** is optimizer & lr scheduler collections in PyTorch.
|
|
51
51
|
I just re-implemented (speed & memory tweaks, plug-ins) the algorithm while based on the original paper. Also, It includes useful and practical optimization ideas.
|
|
52
|
-
Currently, **
|
|
52
|
+
Currently, **76 optimizers (+ `bitsandbytes`, `qgalore`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
53
53
|
|
|
54
54
|
Highly inspired by [pytorch-optimizer](https://github.com/jettify/pytorch-optimizer).
|
|
55
55
|
|
|
@@ -212,6 +212,7 @@ supported_optimizers = get_supported_optimizers()
|
|
|
212
212
|
| AdamMini | *Use Fewer Learning Rates To Gain More* | [github](https://github.com/zyushun/Adam-mini) | <https://arxiv.org/abs/2406.16793> | [cite](https://github.com/zyushun/Adam-mini?tab=readme-ov-file#citation) |
|
|
213
213
|
| TRAC | *Adaptive Parameter-free Optimization* | [github](https://github.com/ComputationalRobotics/TRAC) | <https://arxiv.org/abs/2405.16642> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv240516642M/exportcitation) |
|
|
214
214
|
| AdamG | *Towards Stability of Parameter-free Optimization* | | <https://arxiv.org/abs/2405.04376> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv240504376P/exportcitation) |
|
|
215
|
+
| AdEMAMix | *Better, Faster, Older* | [github](https://github.com/nanowell/AdEMAMix-Optimizer-Pytorch) | <https://arxiv.org/abs/2409.03137> | [cite](https://github.com/nanowell/AdEMAMix-Optimizer-Pytorch?tab=readme-ov-file#reference) |
|
|
215
216
|
|
|
216
217
|
## Supported LR Scheduler
|
|
217
218
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
**pytorch-optimizer** is optimizer & lr scheduler collections in PyTorch.
|
|
12
12
|
I just re-implemented (speed & memory tweaks, plug-ins) the algorithm while based on the original paper. Also, It includes useful and practical optimization ideas.
|
|
13
|
-
Currently, **
|
|
13
|
+
Currently, **76 optimizers (+ `bitsandbytes`, `qgalore`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
14
14
|
|
|
15
15
|
Highly inspired by [pytorch-optimizer](https://github.com/jettify/pytorch-optimizer).
|
|
16
16
|
|
|
@@ -173,6 +173,7 @@ supported_optimizers = get_supported_optimizers()
|
|
|
173
173
|
| AdamMini | *Use Fewer Learning Rates To Gain More* | [github](https://github.com/zyushun/Adam-mini) | <https://arxiv.org/abs/2406.16793> | [cite](https://github.com/zyushun/Adam-mini?tab=readme-ov-file#citation) |
|
|
174
174
|
| TRAC | *Adaptive Parameter-free Optimization* | [github](https://github.com/ComputationalRobotics/TRAC) | <https://arxiv.org/abs/2405.16642> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv240516642M/exportcitation) |
|
|
175
175
|
| AdamG | *Towards Stability of Parameter-free Optimization* | | <https://arxiv.org/abs/2405.04376> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv240504376P/exportcitation) |
|
|
176
|
+
| AdEMAMix | *Better, Faster, Older* | [github](https://github.com/nanowell/AdEMAMix-Optimizer-Pytorch) | <https://arxiv.org/abs/2409.03137> | [cite](https://github.com/nanowell/AdEMAMix-Optimizer-Pytorch?tab=readme-ov-file#reference) |
|
|
176
177
|
|
|
177
178
|
## Supported LR Scheduler
|
|
178
179
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pytorch_optimizer"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.2"
|
|
4
4
|
description = "optimizer & lr scheduler & objective function collections in PyTorch"
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
authors = ["kozistr <kozistr@gmail.com>"]
|
|
@@ -11,15 +11,15 @@ repository = "https://github.com/kozistr/pytorch_optimizer"
|
|
|
11
11
|
documentation = "https://pytorch-optimizers.readthedocs.io/en/latest"
|
|
12
12
|
keywords = [
|
|
13
13
|
"pytorch", "deep-learning", "optimizer", "lr scheduler", "A2Grad", "ASGD", "AccSGD", "AdaBelief", "AdaBound",
|
|
14
|
-
"AdaDelta", "AdaFactor", "AdaMax", "AdamG", "AdaMod", "AdaNorm", "AdaPNM", "AdaSmooth", "
|
|
15
|
-
"Adalite", "AdaLomo", "AdamMini", "AdamP", "AdamS", "Adan", "AggMo", "Aida", "AliG", "Amos", "Apollo",
|
|
16
|
-
"bSAM", "CAME", "DAdaptAdaGrad", "DAdaptAdam", "DAdaptAdan", "DAdaptSGD", "DAdaptLion", "DiffGrad",
|
|
17
|
-
"Fromage", "GaLore", "Gravity", "GrokFast", "GSAM", "Kate", "Lamb", "LARS", "Lion", "LOMO", "Lookahead",
|
|
18
|
-
"MSVAG", "Nero", "NovoGrad", "PAdam", "PCGrad", "PID", "PNM", "Prodigy", "QHAdam", "QHM", "RAdam",
|
|
19
|
-
"Ranger21", "RotoGrad", "SAM", "ScheduleFreeSGD", "ScheduleFreeAdamW", "SGDP", "Shampoo",
|
|
20
|
-
"SignSGD", "SM3", "SopihaH", "SRMM", "StableAdamW", "SWATS", "Tiger", "TRAC", "WSAM",
|
|
21
|
-
"Focal", "FocalCosine", "SoftF1", "Dice", "LDAM", "Jaccard", "Bi-Tempered", "Tversky",
|
|
22
|
-
"LovaszHinge", "bitsandbytes", "WSD", "QGaLore",
|
|
14
|
+
"AdaDelta", "AdaFactor", "AdaMax", "AdamG", "AdaMod", "AdaNorm", "AdaPNM", "AdaSmooth", "AdEMAMix", "AdaHessian",
|
|
15
|
+
"Adai", "Adalite", "AdaLomo", "AdamMini", "AdamP", "AdamS", "Adan", "AggMo", "Aida", "AliG", "Amos", "Apollo",
|
|
16
|
+
"AvaGrad", "bSAM", "CAME", "DAdaptAdaGrad", "DAdaptAdam", "DAdaptAdan", "DAdaptSGD", "DAdaptLion", "DiffGrad",
|
|
17
|
+
"FAdam", "Fromage", "GaLore", "Gravity", "GrokFast", "GSAM", "Kate", "Lamb", "LARS", "Lion", "LOMO", "Lookahead",
|
|
18
|
+
"MADGRAD", "MSVAG", "Nero", "NovoGrad", "PAdam", "PCGrad", "PID", "PNM", "Prodigy", "QHAdam", "QHM", "RAdam",
|
|
19
|
+
"Ranger", "Ranger21", "RotoGrad", "SAM", "ScheduleFreeSGD", "ScheduleFreeAdamW", "SGDP", "Shampoo",
|
|
20
|
+
"ScalableShampoo", "SGDW", "SignSGD", "SM3", "SopihaH", "SRMM", "StableAdamW", "SWATS", "Tiger", "TRAC", "WSAM",
|
|
21
|
+
"Yogi", "BCE", "BCEFocal", "Focal", "FocalCosine", "SoftF1", "Dice", "LDAM", "Jaccard", "Bi-Tempered", "Tversky",
|
|
22
|
+
"FocalTversky", "LovaszHinge", "bitsandbytes", "WSD", "QGaLore",
|
|
23
23
|
]
|
|
24
24
|
classifiers = [
|
|
25
25
|
"License :: OSI Approved :: Apache Software License",
|
|
@@ -71,7 +71,7 @@ lint.select = [
|
|
|
71
71
|
]
|
|
72
72
|
lint.ignore = [
|
|
73
73
|
"B905", "D100", "D102", "D104", "D105", "D107", "D203", "D213", "D413", "PIE790", "PLR0912", "PLR0913", "PLR0915",
|
|
74
|
-
"PLR2004", "RUF013", "Q003",
|
|
74
|
+
"PLR2004", "RUF013", "Q003", "ARG002",
|
|
75
75
|
]
|
|
76
76
|
lint.fixable = ["ALL"]
|
|
77
77
|
lint.unfixable = ["F401"]
|
|
@@ -54,6 +54,7 @@ from pytorch_optimizer.optimizer.adanorm import AdaNorm
|
|
|
54
54
|
from pytorch_optimizer.optimizer.adapnm import AdaPNM
|
|
55
55
|
from pytorch_optimizer.optimizer.adashift import AdaShift
|
|
56
56
|
from pytorch_optimizer.optimizer.adasmooth import AdaSmooth
|
|
57
|
+
from pytorch_optimizer.optimizer.ademamix import AdEMAMix
|
|
57
58
|
from pytorch_optimizer.optimizer.agc import agc
|
|
58
59
|
from pytorch_optimizer.optimizer.aggmo import AggMo
|
|
59
60
|
from pytorch_optimizer.optimizer.aida import Aida
|
|
@@ -208,6 +209,7 @@ OPTIMIZER_LIST: List[OPTIMIZER] = [
|
|
|
208
209
|
AdamMini,
|
|
209
210
|
AdaLOMO,
|
|
210
211
|
AdamG,
|
|
212
|
+
AdEMAMix,
|
|
211
213
|
]
|
|
212
214
|
OPTIMIZERS: Dict[str, OPTIMIZER] = {str(optimizer.__name__).lower(): optimizer for optimizer in OPTIMIZER_LIST}
|
|
213
215
|
|
|
@@ -52,7 +52,7 @@ class REXScheduler(LRScheduler):
|
|
|
52
52
|
|
|
53
53
|
return self.min_lr + (self.max_lr - self.min_lr) * ((1.0 - progress) / (1.0 - progress / 2.0))
|
|
54
54
|
|
|
55
|
-
def step(self, epoch: Optional[int] = None) -> float:
|
|
55
|
+
def step(self, epoch: Optional[int] = None) -> float:
|
|
56
56
|
value: float = self.get_linear_lr()
|
|
57
57
|
|
|
58
58
|
self.step_t += 1
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import math
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
import torch
|
|
5
|
+
|
|
6
|
+
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
7
|
+
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
8
|
+
from pytorch_optimizer.base.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AdEMAMix(BaseOptimizer):
|
|
12
|
+
r"""Better, Faster, Older.
|
|
13
|
+
|
|
14
|
+
:param params: PARAMETERS. iterable of parameters to optimize or dicts defining parameter groups.
|
|
15
|
+
:param lr: float. learning rate.
|
|
16
|
+
:param betas: BETAS. coefficients used for computing running averages of gradient and the squared hessian trace.
|
|
17
|
+
:param weight_decay: float. weight decay (L2 penalty).
|
|
18
|
+
:param weight_decouple: bool. the optimizer uses decoupled weight decay as in AdamW.
|
|
19
|
+
:param fixed_decay: bool. fix weight decay.
|
|
20
|
+
:param alpha: float. usually between 4 and 10 would work well.
|
|
21
|
+
:param t_alpha_beta3: Optional[float]. total number of iterations is preferred when needed.
|
|
22
|
+
:param eps: float. term added to the denominator to improve numerical stability.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
params: PARAMETERS,
|
|
28
|
+
lr: float = 1e-3,
|
|
29
|
+
betas: BETAS = (0.9, 0.999, 0.9999),
|
|
30
|
+
weight_decay: float = 0.0,
|
|
31
|
+
weight_decouple: bool = False,
|
|
32
|
+
fixed_decay: bool = False,
|
|
33
|
+
alpha: float = 5.0,
|
|
34
|
+
t_alpha_beta3: Optional[float] = None,
|
|
35
|
+
eps: float = 1e-8,
|
|
36
|
+
**kwargs,
|
|
37
|
+
):
|
|
38
|
+
self.validate_learning_rate(lr)
|
|
39
|
+
self.validate_betas(betas)
|
|
40
|
+
self.validate_non_negative(alpha, 'alpha')
|
|
41
|
+
self.validate_non_negative(t_alpha_beta3, 't_alpha_beta3')
|
|
42
|
+
self.validate_non_negative(weight_decay, 'weight_decay')
|
|
43
|
+
self.validate_non_negative(eps, 'eps')
|
|
44
|
+
|
|
45
|
+
defaults: DEFAULTS = {
|
|
46
|
+
'lr': lr,
|
|
47
|
+
'betas': betas,
|
|
48
|
+
'weight_decay': weight_decay,
|
|
49
|
+
'weight_decouple': weight_decouple,
|
|
50
|
+
'fixed_decay': fixed_decay,
|
|
51
|
+
'alpha': alpha,
|
|
52
|
+
't_alpha_beta3': t_alpha_beta3,
|
|
53
|
+
'eps': eps,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
super().__init__(params, defaults)
|
|
57
|
+
|
|
58
|
+
def __str__(self) -> str:
|
|
59
|
+
return 'AdEMAMix'
|
|
60
|
+
|
|
61
|
+
@torch.no_grad()
|
|
62
|
+
def reset(self):
|
|
63
|
+
for group in self.param_groups:
|
|
64
|
+
group['step'] = 0
|
|
65
|
+
for p in group['params']:
|
|
66
|
+
state = self.state[p]
|
|
67
|
+
|
|
68
|
+
state['exp_avg'] = torch.zeros_like(p)
|
|
69
|
+
state['exp_avg_sq'] = torch.zeros_like(p)
|
|
70
|
+
state['exp_avg_slow'] = torch.zeros_like(p)
|
|
71
|
+
|
|
72
|
+
@staticmethod
|
|
73
|
+
def schedule_alpha(t_alpha_beta3: Optional[float], step: int, alpha: float) -> float:
|
|
74
|
+
if t_alpha_beta3 is None:
|
|
75
|
+
return alpha
|
|
76
|
+
return min(step * alpha / t_alpha_beta3, alpha)
|
|
77
|
+
|
|
78
|
+
@staticmethod
|
|
79
|
+
def schedule_beta3(t_alpha_beta3: Optional[float], step: int, beta1: float, beta3: float) -> float:
|
|
80
|
+
if t_alpha_beta3 is None:
|
|
81
|
+
return beta3
|
|
82
|
+
|
|
83
|
+
log_beta1, log_beta3 = math.log(beta1), math.log(beta3)
|
|
84
|
+
|
|
85
|
+
return min(
|
|
86
|
+
math.exp(
|
|
87
|
+
log_beta1 * log_beta3 / ((1.0 - step / t_alpha_beta3) * log_beta3 + (step / t_alpha_beta3) * log_beta1)
|
|
88
|
+
),
|
|
89
|
+
beta3,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
@torch.no_grad()
|
|
93
|
+
def step(self, closure: CLOSURE = None) -> LOSS:
|
|
94
|
+
loss: LOSS = None
|
|
95
|
+
if closure is not None:
|
|
96
|
+
with torch.enable_grad():
|
|
97
|
+
loss = closure()
|
|
98
|
+
|
|
99
|
+
for group in self.param_groups:
|
|
100
|
+
if 'step' in group:
|
|
101
|
+
group['step'] += 1
|
|
102
|
+
else:
|
|
103
|
+
group['step'] = 1
|
|
104
|
+
|
|
105
|
+
beta1, beta2, beta3 = group['betas']
|
|
106
|
+
|
|
107
|
+
bias_correction1: float = self.debias(beta1, group['step'])
|
|
108
|
+
bias_correction2_sq: float = math.sqrt(self.debias(beta2, group['step']))
|
|
109
|
+
|
|
110
|
+
alpha_t: float = self.schedule_alpha(group['t_alpha_beta3'], group['step'], group['alpha'])
|
|
111
|
+
beta3_t: float = self.schedule_beta3(group['t_alpha_beta3'], group['step'], beta1, beta3)
|
|
112
|
+
|
|
113
|
+
for p in group['params']:
|
|
114
|
+
if p.grad is None:
|
|
115
|
+
continue
|
|
116
|
+
|
|
117
|
+
grad = p.grad
|
|
118
|
+
if grad.is_sparse:
|
|
119
|
+
raise NoSparseGradientError(str(self))
|
|
120
|
+
|
|
121
|
+
state = self.state[p]
|
|
122
|
+
|
|
123
|
+
if len(state) == 0:
|
|
124
|
+
state['exp_avg'] = torch.zeros_like(p)
|
|
125
|
+
state['exp_avg_sq'] = torch.zeros_like(p)
|
|
126
|
+
state['exp_avg_slow'] = torch.zeros_like(p)
|
|
127
|
+
|
|
128
|
+
self.apply_weight_decay(
|
|
129
|
+
p=p,
|
|
130
|
+
grad=grad,
|
|
131
|
+
lr=group['lr'],
|
|
132
|
+
weight_decay=group['weight_decay'],
|
|
133
|
+
weight_decouple=group['weight_decouple'],
|
|
134
|
+
fixed_decay=group['fixed_decay'],
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
exp_avg, exp_avg_sq, exp_avg_slow = state['exp_avg'], state['exp_avg_sq'], state['exp_avg_slow']
|
|
138
|
+
|
|
139
|
+
exp_avg.mul_(beta1).add_(grad, alpha=1.0 - beta1)
|
|
140
|
+
exp_avg_sq.mul_(beta2).addcmul_(grad, grad, value=1.0 - beta2)
|
|
141
|
+
exp_avg_slow.mul_(beta3_t).add_(grad, alpha=1.0 - beta3_t)
|
|
142
|
+
|
|
143
|
+
de_nom = (exp_avg_sq.sqrt() / bias_correction2_sq).add_(group['eps'])
|
|
144
|
+
|
|
145
|
+
step_size = group['lr'] / bias_correction1
|
|
146
|
+
|
|
147
|
+
p.addcdiv_(exp_avg + alpha_t * exp_avg_slow, de_nom, value=-step_size)
|
|
148
|
+
|
|
149
|
+
return loss
|
|
@@ -39,6 +39,7 @@ class DAdaptAdaGrad(BaseOptimizer):
|
|
|
39
39
|
weight_decouple: bool = False,
|
|
40
40
|
fixed_decay: bool = False,
|
|
41
41
|
eps: float = 0.0,
|
|
42
|
+
**kwargs,
|
|
42
43
|
):
|
|
43
44
|
self.validate_learning_rate(lr)
|
|
44
45
|
self.validate_range(momentum, 'momentum', 0.0, 1.0, range_type='[)')
|
|
@@ -266,6 +267,7 @@ class DAdaptAdam(BaseOptimizer):
|
|
|
266
267
|
fixed_decay: bool = False,
|
|
267
268
|
bias_correction: bool = False,
|
|
268
269
|
eps: float = 1e-8,
|
|
270
|
+
**kwargs,
|
|
269
271
|
):
|
|
270
272
|
self.validate_learning_rate(lr)
|
|
271
273
|
self.validate_betas(betas)
|
|
@@ -423,6 +425,7 @@ class DAdaptSGD(BaseOptimizer):
|
|
|
423
425
|
weight_decay: float = 0.0,
|
|
424
426
|
weight_decouple: bool = False,
|
|
425
427
|
fixed_decay: bool = False,
|
|
428
|
+
**kwargs,
|
|
426
429
|
):
|
|
427
430
|
self.validate_learning_rate(lr)
|
|
428
431
|
self.validate_range(momentum, 'momentum', 0.0, 1.0, range_type='[)')
|
|
@@ -560,6 +563,7 @@ class DAdaptAdan(BaseOptimizer):
|
|
|
560
563
|
d0: float = 1e-6,
|
|
561
564
|
growth_rate: float = float('inf'),
|
|
562
565
|
eps: float = 1e-8,
|
|
566
|
+
**kwargs,
|
|
563
567
|
):
|
|
564
568
|
self.validate_learning_rate(lr)
|
|
565
569
|
self.validate_betas(betas)
|
|
@@ -721,6 +725,7 @@ class DAdaptLion(BaseOptimizer):
|
|
|
721
725
|
weight_decay: float = 0.0,
|
|
722
726
|
weight_decouple: bool = False,
|
|
723
727
|
fixed_decay: bool = False,
|
|
728
|
+
**kwargs,
|
|
724
729
|
):
|
|
725
730
|
self.validate_learning_rate(lr)
|
|
726
731
|
self.validate_betas(betas)
|
|
@@ -22,7 +22,7 @@ class Fromage(BaseOptimizer):
|
|
|
22
22
|
norms to lie within 2x their initial norms. This regularises the model class.
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
-
def __init__(self, params: PARAMETERS, lr: float = 1e-2, p_bound: Optional[float] = None):
|
|
25
|
+
def __init__(self, params: PARAMETERS, lr: float = 1e-2, p_bound: Optional[float] = None, **kwargs):
|
|
26
26
|
self.validate_learning_rate(lr)
|
|
27
27
|
|
|
28
28
|
self.p_bound = p_bound
|
|
@@ -21,7 +21,12 @@ class GaLoreProjector:
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
def __init__(
|
|
24
|
-
self,
|
|
24
|
+
self,
|
|
25
|
+
rank: int = 128,
|
|
26
|
+
update_proj_gap: int = 50,
|
|
27
|
+
scale: float = 1.0,
|
|
28
|
+
projection_type: PROJECTION_TYPE = 'std',
|
|
29
|
+
**kwargs,
|
|
25
30
|
):
|
|
26
31
|
self.rank = rank
|
|
27
32
|
self.update_proj_gap = update_proj_gap
|
|
@@ -30,6 +30,7 @@ class LOMO(BaseOptimizer):
|
|
|
30
30
|
lr: float = 1e-3,
|
|
31
31
|
clip_grad_norm: Optional[float] = None,
|
|
32
32
|
clip_grad_value: Optional[float] = None,
|
|
33
|
+
**kwargs,
|
|
33
34
|
):
|
|
34
35
|
self.validate_learning_rate(lr)
|
|
35
36
|
self.validate_non_negative(clip_grad_norm, 'clip_grad_norm')
|
|
@@ -228,6 +229,7 @@ class AdaLOMO(BaseOptimizer):
|
|
|
228
229
|
clip_grad_value: Optional[float] = None,
|
|
229
230
|
eps1: float = 1e-30,
|
|
230
231
|
eps2: float = 1e-3,
|
|
232
|
+
**kwargs,
|
|
231
233
|
) -> None: # fmt: skip
|
|
232
234
|
self.validate_learning_rate(lr)
|
|
233
235
|
self.validate_non_negative(weight_decay, 'weight_decay')
|
|
@@ -13,7 +13,13 @@ class MSVAG(BaseOptimizer):
|
|
|
13
13
|
:param beta: float. Moving average (momentum) constant (scalar tensor or float value).
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
def __init__(
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
params: PARAMETERS,
|
|
19
|
+
lr: float = 1e-2,
|
|
20
|
+
beta: float = 0.9,
|
|
21
|
+
**kwargs,
|
|
22
|
+
):
|
|
17
23
|
self.validate_learning_rate(lr)
|
|
18
24
|
self.validate_range(beta, 'beta', 0.0, 1.0, range_type='[]')
|
|
19
25
|
|
|
@@ -17,7 +17,13 @@ class Nero(BaseOptimizer):
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
def __init__(
|
|
20
|
-
self,
|
|
20
|
+
self,
|
|
21
|
+
params: PARAMETERS,
|
|
22
|
+
lr: float = 0.01,
|
|
23
|
+
beta: float = 0.999,
|
|
24
|
+
constraints: bool = True,
|
|
25
|
+
eps: float = 1e-8,
|
|
26
|
+
**kwargs,
|
|
21
27
|
):
|
|
22
28
|
self.validate_learning_rate(lr)
|
|
23
29
|
self.validate_range(beta, 'beta', 0.0, 1.0, range_type='[]')
|
{pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/schedulefree.py
RENAMED
|
@@ -36,6 +36,7 @@ class ScheduleFreeSGD(BaseOptimizer):
|
|
|
36
36
|
weight_lr_power: float = 2.0,
|
|
37
37
|
warmup_steps: int = 0,
|
|
38
38
|
eps: float = 1e-8,
|
|
39
|
+
**kwargs,
|
|
39
40
|
):
|
|
40
41
|
self.validate_learning_rate(lr)
|
|
41
42
|
self.validate_range(momentum, 'momentum', 0.0, 1.0, range_type='[]')
|
|
@@ -180,6 +181,7 @@ class ScheduleFreeAdamW(BaseOptimizer):
|
|
|
180
181
|
warmup_steps: int = 0,
|
|
181
182
|
ams_bound: bool = False,
|
|
182
183
|
eps: float = 1e-8,
|
|
184
|
+
**kwargs,
|
|
183
185
|
):
|
|
184
186
|
self.validate_learning_rate(lr)
|
|
185
187
|
self.validate_betas(betas)
|
|
@@ -27,6 +27,7 @@ class AccSGD(BaseOptimizer):
|
|
|
27
27
|
xi: float = 10.0,
|
|
28
28
|
constant: float = 0.7,
|
|
29
29
|
weight_decay: float = 0.0,
|
|
30
|
+
**kwargs,
|
|
30
31
|
):
|
|
31
32
|
self.validate_learning_rate(lr)
|
|
32
33
|
self.validate_non_negative(kappa, 'kappa')
|
|
@@ -124,6 +125,7 @@ class SGDW(BaseOptimizer):
|
|
|
124
125
|
weight_decouple: bool = True,
|
|
125
126
|
dampening: float = 0.0,
|
|
126
127
|
nesterov: bool = False,
|
|
128
|
+
**kwargs,
|
|
127
129
|
):
|
|
128
130
|
self.validate_learning_rate(lr)
|
|
129
131
|
self.validate_range(momentum, 'momentum', 0.0, 1.0)
|
|
@@ -222,6 +224,7 @@ class ASGD(BaseOptimizer):
|
|
|
222
224
|
theta: float = 1.0,
|
|
223
225
|
dampening: float = 1.0,
|
|
224
226
|
eps: float = 1e-5,
|
|
227
|
+
**kwargs,
|
|
225
228
|
):
|
|
226
229
|
self.validate_learning_rate(lr)
|
|
227
230
|
self.validate_non_negative(amplifier, 'amplifier')
|
|
@@ -339,6 +342,7 @@ class SignSGD(BaseOptimizer):
|
|
|
339
342
|
momentum: float = 0.9,
|
|
340
343
|
weight_decay: float = 0.0,
|
|
341
344
|
weight_decouple: bool = True,
|
|
345
|
+
**kwargs,
|
|
342
346
|
):
|
|
343
347
|
self.validate_learning_rate(lr)
|
|
344
348
|
self.validate_range(momentum, 'beta', 0.0, 1.0)
|
|
@@ -36,6 +36,7 @@ class Shampoo(BaseOptimizer):
|
|
|
36
36
|
fixed_decay: bool = False,
|
|
37
37
|
preconditioning_compute_steps: int = 1,
|
|
38
38
|
matrix_eps: float = 1e-6,
|
|
39
|
+
**kwargs,
|
|
39
40
|
):
|
|
40
41
|
self.validate_learning_rate(lr)
|
|
41
42
|
self.validate_range(momentum, 'momentum', 0.0, 1.0)
|
|
@@ -211,6 +212,7 @@ class ScalableShampoo(BaseOptimizer):
|
|
|
211
212
|
diagonal_eps: float = 1e-10,
|
|
212
213
|
matrix_eps: float = 1e-6,
|
|
213
214
|
use_svd: bool = False,
|
|
215
|
+
**kwargs,
|
|
214
216
|
):
|
|
215
217
|
self.validate_learning_rate(lr)
|
|
216
218
|
self.validate_betas(betas)
|
{pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/optimizer/shampoo_utils.py
RENAMED
|
@@ -37,7 +37,7 @@ class Graft:
|
|
|
37
37
|
r"""Get preconditioned gradient."""
|
|
38
38
|
return grad
|
|
39
39
|
|
|
40
|
-
def update_momentum(self, update: torch.Tensor, unused_beta1: float) -> torch.Tensor:
|
|
40
|
+
def update_momentum(self, update: torch.Tensor, unused_beta1: float) -> torch.Tensor:
|
|
41
41
|
r"""Update momentum."""
|
|
42
42
|
return update
|
|
43
43
|
|
|
@@ -16,7 +16,14 @@ class SRMM(BaseOptimizer):
|
|
|
16
16
|
:param memory_length: Optional[int]. internal memory length for moving average. None for no refreshing.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
|
-
def __init__(
|
|
19
|
+
def __init__(
|
|
20
|
+
self,
|
|
21
|
+
params: PARAMETERS,
|
|
22
|
+
lr: float = 0.01,
|
|
23
|
+
beta: float = 0.5,
|
|
24
|
+
memory_length: Optional[int] = 100,
|
|
25
|
+
**kwargs,
|
|
26
|
+
):
|
|
20
27
|
self.validate_learning_rate(lr)
|
|
21
28
|
self.validate_range(beta, 'beta', 0.0, 1.0, range_type='[]')
|
|
22
29
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/__init__.py
RENAMED
|
File without changes
|
{pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/chebyshev.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/linear_warmup.py
RENAMED
|
File without changes
|
{pytorch_optimizer-3.1.1 → pytorch_optimizer-3.1.2}/pytorch_optimizer/lr_scheduler/proportion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|