pytorch 自动优化算法 自动调整学习率

本文探讨了自动优化算法在深度学习中的应用,包括如何自动调整batchsize以适应内存,以及利用cudnn.benchmark提高运行效率。同时,介绍了学习率的动态调整策略,如自定义学习率衰减和余弦退火方法,并提供了相应的代码示例。此外,还提到了warmup策略,以防止模型在训练初期过拟合。通过学习率图像展示了学习率随训练进程的变化情况。

自动优化算法

自动调整batchsize以适应内存,当然batchsize为相当重要的参数,谨慎修改。

cudnn.benchmark=True自动寻找最适合当前配置的高效算法,以增加运行效率

自动调整学习率

1.自定义根据 epoch 改变学习率

def adjust_learning_rate(optimizer, epoch):
    """Sets the learning rate to the initial LR divided by 5 at 60th, 120th and 160th epochs"""
    lr = args.lr * ((0.2 ** int(epoch >= 60)) * (0.2 ** int(epoch >= 120))* (0.2 ** int(epoch >= 160)))
    # log to TensorBoard
    if args.tensorboard:
        log_value('learning_rate', lr, epoch)
    for param_group in optimizer.param_groups:
        param_group['lr'] = lr
  1. 余弦退火方法 更多类似函数的详解
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=args.epochs)

在这里插入图片描述

# [学习率图像](https://nbviewer.org/gist/Ernie1/cb489ebc738ce033bae0485ea1da760a)
import torch
import torchvision.models as models
import matplotlib.pyplot as plt

model = models.resnet50()
op = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
tmax = 50
epoch = 200
sc = torch.optim.lr_scheduler.CosineAnnealingLR(op, tmax)
lr = []
for i in range(epoch):
    lr.append(op.param_groups[0]['lr'])
    sc.step()
    if (i + 1) % tmax==0:
        for _ in range(tmax):
            sc.step()
plt.plot(range(epoch), lr)
plt.title('CosineAnnealingLR')
plt.xlabel('epoch')
plt.ylabel('lr')
plt.show()
  1. warmup方法:再前期使用小的学习率以防止过拟合。
    Pytorch:几行代码轻松实现Warm up + Cosine Anneal LR
    香侬读 | Transformer中warm-up和LayerNorm的重要性探究
    冻结方法可使LOSS持续下降
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值