栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

How to adjust learning rate

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

How to adjust learning rate

官方解释:torch.optim — PyTorch 1.9.1 documentation

1.自我解释:torch.optim.lr_scheduler

        官方给出了很多关于调整学习率的方法,但是调整学习率的时候一般会根据你所训练的次数,做出相应的调整,这是代码自动完成的。

        学习率的调整应该在优化器更新之前,例如:官方给出的例子

model = [Parameter(torch.randn(2, 2, requires_grad=True))]
optimizer = SGD(model, 0.1)  #此为优化器初始化,采用SGD优化器,没有使用动量,收敛慢,容易陷入局部极值。
scheduler = ExponentialLR(optimizer, gamma=0.9)  #此为学习率调整初始化

for epoch in range(20):
    for input, target in dataset:
        optimizer.zero_grad()  #优化器初始化
        output = model(input) #模型输入
        loss = loss_fn(output, target)
        loss.backward()
        optimizer.step() #优化器更新
    scheduler.step()  #学习率调整更新

        学习率一般是在初始训练数据时,学习率会大一点,然后随着训练次数的增加,学习率会慢下降,毕竟寻找极小值时候,不能步长太大。

2.官方给出了很多调整学习率的函数,例如:

#1》lr_scheduler.LambdaLR方法


torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1, verbose=False)

        此调整方法是在最开始进行数据训练时,学习率会乘以一个函数(在下理解为一个系数,只是分批次进行,例如每训练10次,lr=0.02,其他情况下,lr=0.01,最后几次,lr=lr_init),然后随着训练次数的增加,到达最后几次的时候,学习率调整为初始化时候的设定的参数值。

2》lr_scheduler.MultiplicativeLR的方法

torch.optim.lr_scheduler.MultiplicativeLR(optimizer, lr_lambda, last_epoch=-1, verbose=False)

        此方法与第一种方法差不多,只是此方法都是乘以一个固定的系数因子,例如lambda=0.95,在最后训练结束之前的几次又回归到初始设置的学习率,lr=lr_init。

3》lr_scheduler.StepLR方法

torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1, verbose=False)

上述最好的解释为:

假设初始化lr_init=0.05,epoch=130

当0

当20

当40

当80

当120

4》lr_scheduler.MultiStepLR方法

torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.1, last_epoch=-1, verbose=False)

次法在上述基础上增加一个gamm=0.1的衰减系数,当epoch进入一个milestone时,lr=lr*0.1**epoch(在此处等号右边的lr是对应下面的  lr  ,在不同区间,学习率  lr  不同)

当0

当20

当40

当80

(补充)在网络的不同卷积层次可以设置不同的学习率,例如:

import torch.optim as optim
 
optimizer = optim.Adam([{'params':model.conv1.parameters(),'lr':0.05},
                        {'params':model.conv2.parameters(),'lr':0.02}
                        ])

        使用Adam优化器对网络训练时,卷积conv1采用的学习率  lr=0.05,在卷积con2中采用的学习率  lr=0.02 。

后续。。。(小琼)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280387.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号