学习笔记|Pytorch使用教程18(学习率调整策略)

学习笔记|Pytorch使用教程18

本学习笔记主要摘自“深度之眼”,做一个总结,方便查阅。
使用Pytorch版本为1.2

  • 为什么要调整学习率?
  • pytorch的六种学习率调整策略
  • 学习率调整小结

一.为什么要调整学习率?

梯度下降: W i + 1 = W i − g ( W i ) W_{i+1}=W_{i}-g(W_{i}) Wi+1=Wig(Wi)
W i + 1 = W i − L R ∗ g ( W i ) W_{i+1}=W_{i}-LR*g(W_{i}) Wi+1=WiLRg(Wi)
学习率(learning rate)控制更新的步伐

1.class_LRScheduler
在这里插入图片描述
主要属性:

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

主要方法:

  • step() :更新下一个epoch的学习率
  • get_Ir() :虚函数,计算下一个epoch的学习率

完整代码见:学习笔记|Pytorch使用教程05(Dataloader与Dataset)
在下处进行debug:scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1),并进入(step into)
发现进入的是class StepLR(_LRScheduler)这个类。
在这里插入图片描述
进入(step into):super(StepLR, self).__init__(optimizer, last_epoch)
在这里插入图片描述
观察初始化过程。
跳出,进入(step into):scheduler.step() # 更新学习率
在这里插入图片描述

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

1.StepLR
功能:等间隔调整学习率
在这里插入图片描述
主要参数:

  • step_size :调整间隔数
  • gamma :调整系数
    调整方式: I r = I r ∗ g a m m a Ir=Ir*gamma Ir=Irgamma

测试代码:

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值