当前位置: 主页 > 奇亿注册 > 网络营销
项目服务
  • 提交需求
  • 策划设计
  • 技术开发
  • 维护修改
  • 售后服务

本文将结合源码与代码示例详细解析Optimizer的五大方法。

优化器主要用在模型训练阶段,用于更新模型中可学习的参数。torch.optim提供了多种优化器接口,比如Adam、RAdam、SGD、ASGD、LBFGS等,是所有这些优化器的父类

2.1 公共方法

是所有优化器的父类,它主要具有以下几类公共方法:

方法名 官方注解 说明
Add a param group to the Optimizer's param_groups. 给优化器添加模型中可学习的参数组。
Performs a single optimization step (parameter update) 进行一次参数更新。
Sets the gradients of all optimized torch.Tensor to zero. 将上次记录的梯度信息置零,避免梯度累加。
Returns the state of the optimizer as a dict. 以字典形式返回优化器的状态信息。
Loads the optimizer state. 加载以字典形式存储的优化器状态信息。

2.2 行为解析

以下将结合源码 (注:小喵的torch版本为1.4.0) 与示例代码来解析各种方法的行为。为了方便理解,小喵在相关源码中都添加了必要的注释。

2.2.1 __init___初始化

下面是的初始化函数源码:

 

初始化函数用于初始化优化器,需传入两个参数:

  • :模型的可学习参数。

  • :(全局)默认优化器超参,如学习率等。

允许两种传入格式,其一是网络全局参数,即网络的所有可学习参数,它们共用一套优化器参数:

 

其二是参数组,每组参数可以指定自己的优化器参数,即可使用不同的优化策略:

 

补充知识:named_parameters()返回关于网络层参数名字和参数,parameters()仅返回网络层参数。

2.2.2 add_param_group参数组设置

在初始化函数中,调用了方法往中添加分组参数,的源码如下:

平台注册入口