PyTorch神经网络优化方法

本文介绍了PyTorch中的神经网络优化方法,包括Momentum和Adam优化器的工作原理及其在解决SGD问题上的应用。通过实例展示了不同优化器在二次函数拟合问题上的性能对比,强调选择适合数据和网络的优化器的重要性。
摘要由CSDN通过智能技术生成

PyTorch神经网络优化方法

  • 了解不同优化器
  • 书写优化器代码
  • Momentum
  • 二维优化,随机梯度下降法进行优化实现
  • Ada自适应梯度调节法
  • RMSProp
  • Adam
  • PyTorch种优化器选择

介绍几种优化器

参考链接:优化器比较
梯度下降法是最基本的一类优化器,目前主要分为三种梯度下降法:标准梯度下降法(GD, Gradient Descent),随机梯度下降法(SGD, Stochastic Gradient Descent)及批量梯度下降法(BGD, Batch Gradient Descent)。

SDG

optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

Momentum

使用动量(Momentum)的随机梯度下降法(SGD),主要思想是引入一个积攒历史梯度信息动量来加速SGD。
从训练集中取一个大小为nn的小批量{X(1),X(2),…,X(n)}{X(1),X(2),…,X(n)}样本,对应的真实值分别为Y(i)Y(i),则Momentum优化表达式为:
在这里插入图片描述

动量主要解决SGD的两个问题:一是随机梯度的方法(引入的噪声);二是Hessian矩阵病态问题(可以理解为SGD在收敛过程中和正确梯度相比来回摆动比较大的问题)。
理解策略为:由于当前权值的改变会受到上一次权值改变的影响,类似于小球向下滚动的时候带上了惯性。这样可以加快小球向下滚动的速度。

Adam

Adam中动量直接并入了梯度一阶矩(指数加权)的估计。其次,相比于缺少修正因子导致二阶矩估计可能在训练初期具有很高偏置的RMSProp,Adam包括偏置修正,修正从原点初始化的一阶矩(动量项)和(非中心的)二阶矩估计。

torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)
# SGD 就是随机梯度下降
opt_SGD         = torch.optim.SGD(net_SGD.parameters(), lr=LR)
# momentum 动量加速,在SGD函数里指定momentum的值即可
opt_Momentum    = torch.optim.SGD(net_Momentum.parameters(), lr=LR, momentum=0.8)
# RMSprop 指定参数alpha
opt_RMSprop     = torch.optim.RMSprop(net_RMSprop.parameters(), lr=LR, alpha
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值