欢迎来到广东某某新能源充电桩有限公司官网!
恒煊娱乐新能源研发充电公司

扫一扫咨询详情

全国咨询热线:

400-123-4567
当前位置: 主页 > 新闻动态 > 企业新闻
新闻动态News

联系热线

400-123-4567

微信号:xinnengyuan
手 机:13000000001
邮 箱:admin@qq.com
地 址:广东省广州市天河区某某科技园

Week4:[任务三] 第一节 优化器optimizer(一)

发布时间:2024-04-22人气:

【目录】

  • 什么是优化器

  • optimizer的属性

  • optimizer的方法

  • 优化器在机器学习中的作用

在损失函数中会得到一个loss值,即模型输出与真实值之间的一个差异

对于loss值我们通常会采取pytorch中的自动求导autograd模块去求取模型当中的参数的梯度grad

优化器拿到梯度grad后,进行一系列的优化策略去更新模型参数,使得loss值不断下降

  • ?导数、方向导数与梯度

学习参数通常是指权值或者偏置bias,更新的策略在神经网络中通常都会采用梯度下降方法

  • 方向导数

两个自变量x,y,输出值为z可以认为是山坡的高度

多元函数的导数都是偏导,对x的偏导就是,固定y,求在x方向上的变化率;而方向有无穷多个,不仅仅x、y方向上有变化率,其他方向任意方向上都有变化率

  • 梯度是一个向量,它向量的方向是使得方向导数最大的那个方向

梯度的方向为方向导数变化率最大的方向(方向为使得方向导数取得最大值的方向),朝着斜坡最陡峭的地方去。模长即为方向导数的值,即为方向导数的变化率。

梯度就是在当前这个点增长最快的一个方向,模长就是增长的速度。梯度的负方向就是下降最快的。

  • defaults里面是基本的超参数:lr、momentum、dampending、weight_decay、nesterov等,用字典打包;
  • state没有训练时为空;
  • param_groups是一个list,list中每一个元素是一个字典,字典中的'params'才是我们真正的参数,'params'里面的数据又是一个list,list中的一个元素又是一组参数
  • params里面的内容为网络的可学习参数,比如,00表示第一个卷积层权重,01表示bias
  • _step_count记录更新次数,以便于调整训练策略,例如每更新100次参数,对学习率调整一下

  • zero_grad()

在每一次反向传播过程中,需要对梯度张量进行清零,因为pytorch张量梯度不能自动清零,是累加的

 
  • ?step()

执行,对参数进行更新

优化器保存的权值地址和真实权值的地址是一样的,说明优化器是通过地址去寻找权值

 
  • ?add_param_group()

通过参数组param_groups的概念来设置不同的参数有不同的学习率,在模型的fineturn中非常实用

 
  • state_dict() 与 load_state_dict()

state_dict()和load_state_dict()用于保存模型信息和加载模型信息,用于模型断点的续训练,一般在10个epoch或50个epoch的时候要保存当前的状态信息;

state_dict()返回两个字典,一个state用于保存缓存信息packed_state和一个param_groups;

load_state_dict()用于接收一个state_dict放在优化器中;

 

在线客服
服务热线

服务热线

400-123-4567

微信咨询
返回顶部

平台注册入口