PyTorch 中的一堆优化器实现,具有干净的代码、严格的类型。此外,还包括有用的优化想法。
项目描述
建造 |
|
质量 |
|
包裹 |
|
地位 |
pytorch-optimizer是 PyTorch 中的一堆优化器集合。此外,还包括有用的优化想法。
大多数实现都基于原始论文,但我添加了一些调整。
受到pytorch-optimizer的高度启发。
文档
用法
安装
$ 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())
支持的优化器
优化器 |
描述 |
官方代码 |
纸 |
|---|---|---|---|
阿达信仰 |
通过相信观察到的梯度来调整步长 |
||
AdaBound |
具有学习率动态界限的自适应梯度方法 |
||
阿达黑森 |
机器学习的自适应二阶优化器 |
||
亚当 |
Adam 中改进的偏差校正 |
||
亚当普 |
在尺度不变权重上减缓动量优化器的减速 |
||
diffGrad |
一种卷积神经网络的优化方法 |
||
研究生院 |
一种动态的、自适应的、对偶平均梯度的随机方法 |
||
拉丹 |
关于自适应学习率的方差及其他 |
||
游侠 |
结合 RAdam 和 LookAhead 的协同优化器,现在 GC 在一个优化器中 |
||
游侠21 |
协同深度学习优化器 |
||
羊肉 |
深度学习的大批量优化 |
||
洗发水 |
预处理随机张量优化 |
||
尼禄 |
转向学习:神经架构感知优化 |
||
亚当 |
用于更快优化深度模型的自适应 Nesterov 动量算法 |
有用的资源
几种优化思路来规范和稳定训练。大多数想法都应用于Ranger21优化器。
此外,大多数捕获来自Ranger21论文。
自适应渐变剪裁
这个想法最初是在NFNet (Normalized-Free Network)论文中提出的。
AGC(自适应梯度裁剪)基于梯度范数与参数范数的单位比率来裁剪梯度。
梯度集中
梯度集中化 (GC)通过将梯度集中到零均值直接对梯度进行操作。
软加转型
通过 softplus 函数运行最终的方差 denom,它提升了极小的值以保持它们的可行性。
论文:arXiv
梯度归一化
规范损失
论文:arXiv
正负动量
线性学习率预热
论文:arXiv
稳定的重量衰减
探索-利用学习率计划
展望
向前k步,后退 1 步。前瞻包括保持权重的指数移动平均值,即
每k_{lookahead}步更新并替换为当前权重(默认为 5)。
切比雪夫学习率表
通过分形学习率计划加速
论文:arXiv
(自适应)锐度感知最小化
锐度感知最小化 (SAM) 同时最小化损失值和损失锐度。
特别是,它寻找位于具有一致低损失的邻域中的参数。
关于亚当和超越的收敛
纸:纸
多任务学习的梯度手术
纸:纸