16学习率调整策略

本文介绍了PyTorch中六种学习率调整策略,包括LRScheduler、StepLR、MultiStepLR、ExponentialLR、CosineAnnealingLR和ReduceLROnPlateau,详细讲解了每种策略的工作原理和参数设置,帮助理解如何在训练过程中有效调整学习率以优化模型性能。
摘要由CSDN通过智能技术生成

一、为什么要调整学习率

学习率(learning rate): 控制更新的步伐

梯度下降: w i + 1 = w i − L R ∗ g ( w i ) w_{i+1} = w_i-LR * g(w_i) wi+1=wiLRg(wi)

在这里插入图片描述
学习率是用来控制更新的步伐,学习率一般前期大后期小,到后期需要调整学习率,让loss逐渐下降到收敛,就如同打高尔夫球,前期大力挥杆,使球到洞口附近,后期接近洞口的时候就需要调整小力度

二、pytorch的六种学习率调整策略

2.1 LRScheduler

class LRScheduler(object):
	def __init__(self, optimizer, last_epoch=-1):

	def get_lr(self):
		raise NotImplementedError

功能:pytorch的六种学习率调整策略方法的基类

主要属性:

  • optimizer: 关联的优化器
  • last_epoch: 记录epoch数
  • base_lrs: 记录初始学习率

主要方法:

  • step(): 更新下一个epoch的学习率,在epoch的for循环处使用
  • getIr(): 虚函数,计算下一个epoch的学习率

2.2 StepLR

lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)

功能: 等间隔调整学习率

主要参数:

  • step_size:调整间隔数
  • gamma: 调整系数

调整方式: Ir =Ir * gamma

# -*- coding:utf-8 -*-

import torch
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt
torch.manual_seed(1)

LR = 0.1
iteration = 10
max_epoch = 200
# ------------------------------ fake data and optimizer  ------------------------------

weights = torch.randn((1), requires_grad=True)
target = torch.zeros((1))

optimizer = optim.SGD([weights], lr=LR, momentum=0.9)


# ------------------------------ 1 Step LR ------------------------------
# flag = 0
flag = 1
if flag:

    scheduler_lr = optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.1)  # 设置学习率下降策略

    lr_list, epoch_list = list(), list()
    for epoch in range(max_epoch):

        lr_list.append(scheduler_lr.get_lr())
        epoch_list.append(epoch)

        for i in range(iteration):

            loss = torch.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值