Skip to main content

PyTorch 中的一堆优化器实现,具有干净的代码、严格的类型。此外,还包括有用的优化想法。

项目描述

建造

工作流程 文件状态

质量

编解码器 黑色的

包裹

PyPI 版本 PyPI 版本

地位

皮皮下载 PyPi 月下载

pytorch-optimizer是 PyTorch 中的一堆优化器集合。此外,还包括有用的优化想法。
大多数实现都基于原始论文,但我添加了一些调整。
受到pytorch-optimizer的高度启发。

文档

https://pytorch-optimizers.readthedocs.io/en/latest/

用法

安装

$ pip3 install pytorch-optimizer

简单用法

from pytorch_optimizer import AdamP

model = YourModel()
optimizer = AdamP(model.parameters())

# or you can use optimizer loader, simply passing a name of the optimizer.

from pytorch_optimizer import load_optimizer

model = YourModel()
opt = load_optimizer(optimizer='adamp')
optimizer = opt(model.parameters())

此外,您可以通过torch.hub加载优化器

import torch

model = YourModel()
opt = torch.hub.load('kozistr/pytorch_optimizer', 'adamp')
optimizer = opt(model.parameters())

支持的优化器

优化器

描述

官方代码

阿达信仰

通过相信观察到的梯度来调整步长

github

https://arxiv.org/abs/2010.07468

AdaBound

具有学习率动态界限的自适应梯度方法

github

https://openreview.net/forum?id=Bkg3g2R9FX

阿达黑森

机器学习的自适应二阶优化器

github

https://arxiv.org/abs/2006.00719

亚当

Adam 中改进的偏差校正

https://arxiv.org/abs/2110.10828

亚当普

在尺度不变权重上减缓动量优化器的减速

github

https://arxiv.org/abs/2006.08217

diffGrad

一种卷积神经网络的优化方法

github

https://arxiv.org/abs/1909.11015v3

研究生院

一种动态的、自适应的、对偶平均梯度的随机方法

github

https://arxiv.org/abs/2101.11075

拉丹

关于自适应学习率的方差及其他

github

https://arxiv.org/abs/1908.03265

游侠

结合 RAdam 和 LookAhead 的协同优化器,现在 GC 在一个优化器中

github

https://bit.ly/3zyspC3

游侠21

协同深度学习优化器

github

https://arxiv.org/abs/2106.13731

羊肉

深度学习的大批量优化

github

https://arxiv.org/abs/1904.00962

洗发水

预处理随机张量优化

github

https://arxiv.org/abs/1802.09568

尼禄

转向学习:神经架构感知优化

github

https://arxiv.org/abs/2102.07227

亚当

用于更快优化深度模型的自适应 Nesterov 动量算法

github

https://arxiv.org/abs/2208.06677

有用的资源

几种优化思路来规范和稳定训练。大多数想法都应用于Ranger21优化器。

此外,大多数捕获来自Ranger21论文。

自适应渐变剪裁

梯度集中

软加转型

梯度归一化

规范损失

正负动量

线性学习率预热

稳定的重量衰减

探索-利用学习率计划

展望

切比雪夫学习率表

(自适应)锐度感知最小化

关于亚当和超越的收敛

多任务学习的梯度手术

自适应渐变剪裁

这个想法最初是在NFNet (Normalized-Free Network)论文中提出的。
AGC(自适应梯度裁剪)基于梯度范数与参数范数的单位比率来裁剪梯度。

梯度集中

https://raw.githubusercontent.com/kozistr/pytorch_optimizer/main/assets/gradient_centralization.png

梯度集中化 (GC)通过将梯度集中到零均值直接对梯度进行操作。

软加转型

通过 softplus 函数运行最终的方差 denom,它提升了极小的值以保持它们的可行性。

梯度归一化

规范损失

https://raw.githubusercontent.com/kozistr/pytorch_optimizer/main/assets/norm_loss.png

正负动量

https://raw.githubusercontent.com/kozistr/pytorch_optimizer/main/assets/positive_negative_momentum.png

线性学习率预热

https://raw.githubusercontent.com/kozistr/pytorch_optimizer/main/assets/linear_lr_warmup.png

稳定的重量衰减

https://raw.githubusercontent.com/kozistr/pytorch_optimizer/main/assets/stable_weight_decay.png

探索-利用学习率计划

https://raw.githubusercontent.com/kozistr/pytorch_optimizer/main/assets/explore_exploit_lr_schedule.png

展望

向前k步,后退 1 步。前瞻包括保持权重的指数移动平均值,即
每k_{lookahead}步更新并替换为当前权重(默认为 5)。

切比雪夫学习率表

通过分形学习率计划加速

(自适应)锐度感知最小化

锐度感知最小化 (SAM) 同时最小化损失值和损失锐度。
特别是,它寻找位于具有一致低损失的邻域中的参数。

关于亚当和超越的收敛

多任务学习的梯度手术

引文

亚当普

自适应梯度裁剪 (AGC)

切比雪夫 LR 时刻表

梯度集中化(GC)

展望

拉丹

规范损失

正负动量

探索-利用学习率计划

关于自适应优化的未调整预热的充分性

稳定的权重衰减正则化

软加转型

研究生院

阿达黑森

AdaBound

坚定信念

锐度感知最小化

自适应锐度感知最小化

diffGrad

关于亚当和超越的收敛

多任务学习的梯度手术

亚当

洗发水

尼禄

亚当

作者

金亨灿/ @kozistr