TEL::0898-88889999

网站公告:

诚信为本:市场永远在变,诚信永远不变。

盛煌注册

  • 主营项目标题六
  • 主营项目标题五
  • 主营项目标题四
  • 主营项目标题三
  • 主营项目标题二
  • 主营项目标题一

盛煌动态

当前位置: 首页 > 盛煌动态

Pytorch框架学习(11)——优化器

发布时间:2024-04-15 11:49:41 点击量:

@[toc]

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

  • 基本属性
    • defaults:优化器超参数
    • state:参数的缓存,如momentum的缓存
    • param_groups:管理的参数组(list)
    • _step_count:记录更新次数,学习率调整中使用


      在这里插入图片描述
  • 基本方法
    • zero_grad():清空所管理参数的梯度,因为pytorch特性:张量梯度不自动清零
    • step():执行一步更新
    • add_param_group():添加参数组
    • state_dict():获取有乎其当前状态信息字典
    • load_state_dict():加载状态信息字典
  • 梯度下降:w_{i+1}=w_i - g(w_i)

  • 学习率:控制更新的步伐。
    增加学习率之后的梯度下降公式为:w_{i+1}=w_i - LR*g(w_i)

  • 动量(Momentum):结合当前梯度与上一次更新信息,用于当前更新
    增加动量之后的梯度下降公式为:
    v_i=m * v_{i-1} + g(w_i)
    w_{i+1}=w_i - lr * v_i
    其中g(w_i)表示w_i的梯度, m为momentum系数, v_i表示更新量,lr表示学习率,w_{i+1}表示第i+1次更新的参数

  • optim.SGD
    • 主要参数:
      • params:管理的参数组(list)
      • lr:初试学习率
      • momentum:动量系数,贝塔
      • weight_decay:L2正则化系数
      • nesterov:是否采用NAG
  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的改进

优化器的作用是管理并更新参数组,请构建一个SGD优化器,通过add_param_group方法添加三组参数,三组参数的学习率分别为 0.01, 0.02, 0.03, momentum分别为0.9, 0.8, 0.7,构建好之后,并打印优化器中的param_groups属性中的每一个元素的key和value(提示:param_groups是list,其每一个元素是一个字典)


执行结果:

 

平台注册入口