深度学习笔记:学习率衰减策略

部署运行你感兴趣的模型镜像

学习率衰减策略

学习率衰减策略,是在训练过程中动态改变学习率本身的一种方法,与AdaGrad等调整学习率的方法不同的是:

学习率衰减策略是同一参数不同时刻的改变(改变本身)

自适应优化算法是不同参数的改变(本身不变,通过历史梯度的累加改变计算结果)

常见的衰减策略

等间隔学习率衰减

在固定的训练轮次间隔降低学习率

指定间隔学习率衰减

在不同训练阶段设置不同的衰减间隔


按指数学习率衰减

每个训练轮次都按指数规律衰减

代码演示

import torch
import torch.optim as optim
import matplotlib.pyplot as plt

x=torch.tensor([1.0],dtype=torch.float)
y_true=torch.tensor([2.1],dtype=torch.float)
w=torch.tensor([0.2],requires_grad=True,dtype=torch.float)
optimizer=optim.SGD([w],lr=0.01,momentum=0.9)
#不同策略参考上面贴下来就行
scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.5)
epochs, iteration = 200, 10
lr_list, epoch_list = [], []
for epoch in range(epochs):     # epoch: 0 ~ 199
        # 获取当前轮数 和 学习率, 并保存到列表中.
        epoch_list.append(epoch)
        lr_list.append(scheduler.get_last_lr())     # 获取最后的lr(learning rate, 学习率)

        # 循环遍历, 每轮每批次进行训练.
        for batch in range(iteration):
            # 先计算预测值, 然后基于损失函数计算损失.
            y_pred = w * x
            # 计算损失, 最小二乘法.
            loss = (y_pred - y_true) ** 2
            # 梯度清零 + 反向传播 + 优化器更新参数.
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
        # 更新学习率.
        scheduler.step()
print(f'lr_list: {lr_list}')        # [0.1, 0.1, 0.1..., 0.05........,0.025.........,  0.0125...]

    # 可视化.
    # x轴: 训练的轮数, y轴: 每轮训练用的学习率
plt.plot(epoch_list, lr_list)
plt.xlabel('Epoch')
plt.ylabel('Learning Rate')
plt.show()

小结

  1. 调度器初始化:基于优化器实例创建学习率调度器

  2. 更新时机:在每个训练轮次(epoch)后调用 scheduler.step()

  3. 获取学习率:使用 scheduler.get_last_lr() 查看当前学习率

  4. 策略选择

    • StepLR:等间隔衰减,简单稳定

    • MultiStepLR:多阶段衰减,更灵活

    • ExponentialLR:平滑衰减,训练过程更稳定

这样的学习率衰减策略能够帮助模型在训练初期快速收敛,在后期精细调优,获得更好的性能表现。

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值