Pytorch教程[08]优化器

简介: Pytorch教程[08]优化器

一.什么是优化器


pytorch的优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签

导数:函数在指定坐标轴上的变化率

方向导数:指定方向上的变化率

梯度:一个向量,方向为方向导数取得最大值的方向

image.png

二.optimizer的属性


基本属性

• defaults:优化器超参数

• state:参数的缓存,如mom en tum的缓存

• params_groups:管理的参数组

• _step_count:记录更新次数,学习率调整中使用

class Optimizer(object):
  def __init__(self, params, defaults):
    self.defaults = defaults
    self.state = defaultdict(dict)
    self.param_groups = []
    param_groups = [{'params': param_groups}]

三.optimizer的方法


基本方法

• zero_grad():清空所管理参数的梯度

• step():执行一步更新

• add_param_group():添加参数组

• state_dict():获取优化器当前状态信息字典

• load_state_dict() :加载状态信息字典

pytorch特性:张量梯度不自动清零

class Optimizer(object):
  def zero_grad(self):
    for group in self.param_groups:
      for p in group['params']:
        if p.grad is not None:
          p.grad.detach_()
          p.grad.zero_()
class Optimizer(object):
  def __init__(self, params, defaults):
    self.defaults = defaults
    self.state = defaultdict(dict)
    self.param_groups = []
class Optimizer(object):
def add_param_group(self, param_group):
  for group in self.param_groups:
    param_set.update(set(group['params’]))
  self.param_groups.append(param_group)
class Optimizer(object):
  def state_dict(self):
    return {
      'state': packed_state, 'param_groups': param_groups, 
      }
  def load_state_dict(self, state_dict):

优化器:


  1. optim.SGD:随机梯度下降法
  2. optim.Adagrad:自适应学习率梯度下降法
  3. optim.RMSprop: Adagrad的改进
  4. optim.Adadelta: Adagrad的改进
  5. optim.Adam:RMSprop结合Momentum
  6. optim.Adamax:Adam增加学习率上限
  7. optim.SparseAdam:稀疏版的Adam
  8. optim.ASGD:随机平均梯度下降
  9. optim.Rprop:弹性反向传播
  10. optim.LBFGS:BFGS的改进


相关文章
|
11天前
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
13 1
|
2月前
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
357 1
Ubuntu下CUDA、Conda、Pytorch联合教程
|
5月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十八)(1)
PyTorch 2.2 中文官方教程(十八)
190 2
PyTorch 2.2 中文官方教程(十八)(1)
|
5月前
|
并行计算 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十七)(4)
PyTorch 2.2 中文官方教程(十七)
177 2
PyTorch 2.2 中文官方教程(十七)(4)
|
5月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十九)(1)
PyTorch 2.2 中文官方教程(十九)
127 1
PyTorch 2.2 中文官方教程(十九)(1)
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十八)(3)
PyTorch 2.2 中文官方教程(十八)
81 1
PyTorch 2.2 中文官方教程(十八)(3)
|
5月前
|
API PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十八)(2)
PyTorch 2.2 中文官方教程(十八)
149 1
PyTorch 2.2 中文官方教程(十八)(2)
|
5月前
|
异构计算 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十七)(3)
PyTorch 2.2 中文官方教程(十七)
89 1
PyTorch 2.2 中文官方教程(十七)(3)
|
5月前
|
PyTorch 算法框架/工具 机器学习/深度学习
PyTorch 2.2 中文官方教程(十七)(2)
PyTorch 2.2 中文官方教程(十七)
126 1
PyTorch 2.2 中文官方教程(十七)(2)
|
5月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十七)(1)
PyTorch 2.2 中文官方教程(十七)
205 1
PyTorch 2.2 中文官方教程(十七)(1)