pytorch使用——(十一)优化器

一、基本概念

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

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

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

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

二、基本属性

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

• defaults:优化器超参数
• state:参数的缓存,如momentum的缓存
• params_groups:管理的参数组
• _step_count:记录更新次数,学习率调整中使用

三、基本方法

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

• zero_grad():清空所管理参数的梯度
• step():执行一步更新

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)

• zero_grad():清空所管理参数的梯度
• step():执行一步更新
• add_param_group():添加参数组

class Optimizer(object):
    def state_dict(self):
        return {
            'state': packed_state,
            'param_groups': param_groups,
            }
    def load_state_dict(self, state_dict):

• zero_grad():清空所管理参数的梯度
• step():执行一步更新
• add_param_group():添加参数组
• state_dict():获取优化器当前状态信息字典
• load_state_dict() :加载状态信息字典

四、torch.optim

1、举例

optim.SGD(params, lr=<object object>,momentum=0, dampening=0,weight_decay=0, nesterov=False
  • params:管理的参数组
  • lr:初始学习率
  • momentum:动量系数,贝塔
  • weight_decay:L2正则化系数
  • nesterov:是否采用NAG

2、常用优化器

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

猜你喜欢

转载自blog.csdn.net/weixin_37799689/article/details/106486027
今日推荐