1. 什么是优化器
  2. optimizer的属性
  3. optimizer的方法
  4. learning rate 学习率
  5. momentum动量
  6. torch.optim.SGD
  7. PyTorch的十种优化器

一、优化器

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

导数:函数在指定坐标轴上的变化率
方向导数:指定方向上的变化率
梯度:一个向量,方向:方向导数取得最大值的方向
image.png

  1. class Optimizer(object):
  2. def __init__(self, params, defaults):
  3. self.defaults = defaults
  4. self.state = defaultdict(dict)
  5. self.param_groups = []
  6. param_groups = [{'params': param_groups}]
  • 基本属性
    • defaults :优化器超参数
    • state :参数的缓存,如momentum的缓存
    • params_groups :管理的参数组
    • _step_count :记录更新次数,学习率调整中使用 ```python class Optimizer(object):

      …接上代码

      def zero_grad(self): for group in self.param_groups:
      1. for p in group['params']:
      2. if p.grad is not None:
      3. p.grad.detach_()
      4. p.grad.zero_()
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)


def state_dict(self):
    # ...                                       
    return {
            'state': packed_state,
            'param_groups': param_groups,
    }


def load_state_dict(self, state_dict):
    # ...                                       

```

  • 基本方法
    • zero_grad() :清空所管理参数的梯度
      • pytorch特性:张量梯度不自动清零
    • step() :执行一步更新
    • add_param_group() :添加参数组
    • state_dict() :获取优化器当前状态信息字典
    • load_state_dict() :加载状态信息字典