动手比较Pytorch中的优化器

简介: 动手比较Pytorch中的优化器

前言


   为保障实现的准确性,试验采用公开数据集MNIST做数据集,本试验只对比Pytorch中各种优化器,所以在每次实验使用的网络结构、损失函数,训练次数等都相同。


种类 区别
实验设备 相同
网络结构 相同
损失函数 相同
训练次数 相同
训练测试比例 相同
学习率 相同
优化器 不同




优化器


   在Pytorch中的optim模块,提供了多种可以直接使用的深度学习的优化器算法,十分方便调用,无需再设计。


种类 种类名称
optim.SGD() 随机梯度下降算法
optim.Rprop() 弹性反向传播算法
optim.ASGD() 平均随机梯度下降算法
optim.RMSprop() RMSprop算法
optim.LBFGS() L-BFGS算法
optim.Adam() Adam算法
optim.Adamax() Adamax算法
optim.Adadelta() Adadelta算法
optim.Adagrad() Adagrad算法



    我们以adam 为例子对设置参数进行说明:


params: 待优化参数的iterable 或定义了参数组的dict, 一般为model.parameters()


lr: 学习率(默认为0.001)


betas: 梯度和梯度平方的系数(默认为0.999)


eps: 增加稳定性加到分母的项(默认为1-8e)


weight_decay: 权重衰减(L2惩罚)默认为0




比较开始


   由于是使用同一实验设备,网络等也相同,我们节约训练时间,定训练轮数为20轮,我们选用的定义损失函数为交叉熵函数。(由于Rprop和LBFGS需要改动其他参数,为保证其他变量的一至性在这里我就不做实验了)


optim.SGD() 实验结果:


image.png


optim.ASGD() 实验结果:

image.png


optim.RMSprop() 实验结果:


image.png


optim.Adam() 实验结果:

image.png


optim.Adamax() 实验结果:

image.png


optim.Adadelta() 实验结果:


image.png


optim.Adagrad() 实验结果:

image.png



结果


优化器 收敛情况 Best_Train_Loss Best_Tese_Loss
optim.SGD() 收敛 0.6943 0.7120
optim.ASGD() 收敛 0.7156 0.7301
optim.RMSprop() 收敛 0.4409 0.5086
optim.Adam() 收敛 0.2536 0.3576
optim.Adamax() 收敛 0.1894 0.3306
optim.Adadelta() 收敛 0.7754 0.7814
optim.Adagrad() 收敛 0.2434 0.233



相关文章
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
1847 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
404 1
|
机器学习/深度学习 监控 PyTorch
PyTorch模型训练:优化器与损失函数的选择
【4月更文挑战第17天】PyTorch中的优化器(如SGD, Adam, RMSprop)和损失函数(如MSE Loss, Cross Entropy Loss)对模型训练效果有显著影响。优化器选择应基于任务复杂度和数据规模,SGD适合简单任务,而Adam和RMSprop适用于复杂情况。损失函数选择依赖于任务类型,MSE Loss用于回归,Cross Entropy Loss用于分类。实践中,应尝试不同组合,调整学习率,监控训练过程,并使用验证集优化模型。
|
机器学习/深度学习 传感器 算法
PyTorch基础之优化器模块、训练和测试模块讲解(附源码)
PyTorch基础之优化器模块、训练和测试模块讲解(附源码)
428 0
|
PyTorch 算法框架/工具
【PyTorch】Optim 优化器
【PyTorch】Optim 优化器
171 0
|
机器学习/深度学习 存储 算法
Pytorch基本使用——优化器
总结了两种优化器,SGD和Adam及变种AdamW
444 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 10 优化器模块+退化学习率
反向传播的意义在于告诉模型我们需要将权重修改到什么数值可以得到最优解,在开始探索合适权重的过程中,正向传播所生成的结果与实际标签的目标值存在误差,反向传播通过这个误差传递给权重,要求权重进行适当的调整来达到一个合适的输出,最终使得正向传播所预测的结果与标签的目标值的误差达到最小,以上即为反向传播的核心思想
407 0
|
缓存 PyTorch 算法框架/工具
Pytorch教程[08]优化器
Pytorch教程[08]优化器
Pytorch教程[08]优化器

热门文章

最新文章

推荐镜像

更多
下一篇
oss云网关配置