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的改进


相关文章
|
1月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
175 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
1月前
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
54 5
|
1月前
|
算法 Python
SciPy 教程 之 SciPy 优化器 3
SciPy 的 optimize 模块提供了多种最优化算法,如查找函数最小值或方程的根。通过 `optimize.root` 可以解决非线性方程,而 `minimize` 函数则用于最小化目标函数,支持多种优化方法。例如,使用 BFGS 方法最小化函数 \(x^2 + x + 2\),可得到最小值 1.75 和对应的 x 值 -0.5。
36 1
|
2月前
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
39 1
|
1月前
|
算法 Python
SciPy 教程 之 SciPy 优化器 1
SciPy 的 optimize 模块提供了多种最优化算法,用于解决寻找函数最小值、方程的根等问题。与 NumPy 不同,SciPy 可以处理非线性方程的根。通过 `optimize.root` 函数,只需提供方程和初始猜测值即可求解。例如,求解方程 `x + cos(x)` 的根,可以使用 `root` 函数轻松实现。
16 0
|
4月前
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
825 1
Ubuntu下CUDA、Conda、Pytorch联合教程
|
7月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十八)(1)
PyTorch 2.2 中文官方教程(十八)
236 2
PyTorch 2.2 中文官方教程(十八)(1)
|
7月前
|
并行计算 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十七)(4)
PyTorch 2.2 中文官方教程(十七)
234 2
PyTorch 2.2 中文官方教程(十七)(4)
|
7月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十九)(1)
PyTorch 2.2 中文官方教程(十九)
146 1
PyTorch 2.2 中文官方教程(十九)(1)
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十八)(3)
PyTorch 2.2 中文官方教程(十八)
102 1
PyTorch 2.2 中文官方教程(十八)(3)

热门文章

最新文章