• pytorch中调整学习率的lr_scheduler机制


    有的时候需要我们通过一定机制来调整学习率,这个时候可以借助于torch.optim.lr_scheduler类来进行调整;一般地有下面两种调整策略:(通过两个例子来展示一下)

    两种机制:LambdaLR机制和StepLR机制;

    (1)LambdaLR机制:

    optimizer_G = torch.optim.Adam([{'params' : optimizer_G.parameters() , 'initial_lr' : train_opt.lr}] , lr = train_opt.lr , betas = (train_opt.betal , 0.999))

    lambda_G = lambda epoch : 0.5 ** (epoch // 30)

    schduler_G = torch.optim.lr_scheduler.LambdaLR(optimizer_G.parameters() , lambda_G , last_epoch = 29);

    scheduler.step()

    lr = schduler.get_lr()[0];  //这里记得加一个[0]的索引!

    for param_group in optimizer_G.param_groups():

      param_group['lr'] = lr

    解释:last_epoch是开始的前一个epoch的索引值,这里为29表示从epoch = 30开始(其中scheduler类中的epoch从last_epoch + 1开始,每次step操作epoch加1),学习率调整为lr * (0.5 ** (epoch // 30));另外注意的是:定义optimizer_G类时,需要写成上述那种形式,不要写成以前常见的“optimizer_G = torch.optim.Adam(params = optimizer_G.parameters()...)”,要像这里一样写成字典形式;否则lr_scheduler类会报“没有initial_lr的错误”

    (2)StepLR机制:

    schduler_G = torch.optim.lr_scheduler.StepLR(optimizer_G.parameters() , step_size = 30 , gamma = 0.1 , last_epoch = 29)

    其他的和上面类似,这里的调整策略如下:

  • 相关阅读:
    JavaScript中的this指向
    JQ延迟对象
    JavaScript事件简述
    1.0 HTML/CSS 优化--《高效前端》学习笔记
    浏览器工作原理(学习笔记)
    this 绑定例外之间接引用
    全局函数是否存在闭包?
    nuxt + vue-i18n 踩坑记录
    继承(学习笔记) —— 《高级教程》
    三、函数作用域和块作用域(学习笔记)—— 《你不知道的JavaScript》
  • 原文地址:https://www.cnblogs.com/zf-blog/p/11262906.html
Copyright © 2020-2023  润新知