Pytorch

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

2020-02-15  本文已影响0人  aidanmomo

@[toc]

1. 什么是优化器

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

2. 学习率与动量

3. torch.optim.SGD

4. 优化器

  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的改进

5. 作业

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

w1 = torch.randn((2, 2), requires_grad=True)
w2 = torch.randn((2, 2), requires_grad=True)
w3 = torch.randn((2, 2), requires_grad=True)
w1.grad = torch.ones((2, 2))

optimizer = optim.SGD([w1], lr=0.01, momentum=0.9)
optimizer.add_param_group({"params": w2, 'lr': 0.02, 'momentum': 0.8})
optimizer.add_param_group({"params": w3, 'lr': 0.03, 'momentum': 0.7})

print("optimizer.param_groups is\n{}".format(optimizer.param_groups))

执行结果:

[{'params': [tensor([[0.6614, 0.2669],
        [0.0617, 0.6213]], requires_grad=True)], 'lr': 0.01, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0, 'nesterov': False}, {'params': [tensor([[-0.4519, -0.1661],
        [-1.5228,  0.3817]], requires_grad=True)], 'lr': 0.02, 'momentum': 0.8, 'dampening': 0, 'weight_decay': 0, 'nesterov': False}, {'params': [tensor([[-1.0276, -0.5631],
        [-0.8923, -0.0583]], requires_grad=True)], 'lr': 0.03, 'momentum': 0.7, 'dampening': 0, 'weight_decay': 0, 'nesterov': False}]
上一篇 下一篇

猜你喜欢

热点阅读