PyTorch笔记19--学习率调整策略

为什么要调整学习率

主要属性:

        optimizer:关联的优化器

        last_epoch:记录epoch数

        base_lrs:记录初始学习率

主要方法:

        step():更新下一个epoch的学习率

        get_lr():虚函数,计算下一个epoch的学习率

class _LRScheduler(object):
    def __init__(self, optimizer, last_epoch=-1):
    
    def get_lr(self):
        raise NotImplementedError

pytorch的六种学习率调整策略

StrpLR

调整方式:lr = lr * gamma

lr_scheduler.StepLR(#等间隔调整学习率
    optimizer, 
    step_size, #调整间隔数
    gamma=0.1, #调整系数
    last_epoch=-1
)

MultiStepLR

调整方式:lr = lr * gamma

lr_scheduler.MultiStepLR(#按给定间隔调整学习率
    optimizer, 
    milestones, #设定调整时刻数
    gamma=0.1, #调整系数
    last_epoch=-1
)

ExponentialLR

调整方式:lr = lr * gamma ** epoch

lr_scheduler.ExponentialLR(#按指数衰减调整学习率
    ptimizer, 
    gamma, #指数的底
    last_epoch=-1
)

CosineAnnealingLR

调整方式:

lr_scheduler.CosineAnnealingLR(#余弦周期调整学习率
    optimizer, 
    T_max, #下降周期
    eta_min=0, #学习率下限
    last_epoch=-1
)

ReduceLRonPlateau

lr_scheduler.ReduceLROnPlateau(
    optimizer, 
    mode='min', #min/max 两种模式
    factor=0.1, #调整系数
    patience=10, #“耐心”,接受几次不变化
    verbose=False, #是否打印日志
    threshold=0.0001, 
    threshold_mode='rel', 
    cooldown=0, #“冷却时间”,停止监控一段时间
    min_lr=0, #学习率下限
    eps=1e-08#学习率衰减最小值
)

LambdaLR

lr_scheduler.LambdaLR(#自定义调整策略
    optimizer, 
    lr_lambda, #function or list
    last_epoch=-1
)

学习率调整小结

1. 有序调整:Step、MultiStep、Exponential 和 CosineAnnealing

2. 自适应调整:ReduceLROnPleateau

3. 自定义调整:Lambda

学习率初始化:

1. 设置较小数:0.01、0.001、0.0001

2. 搜索最大学习率: 《Cyclical Learning Rates for Training Neural Networks》

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值