当前位置: 首页 > news >正文

深度学习基础知识 学习率调度器的用法解析

深度学习基础知识 学习率调度器的用法解析

  • 1、自定义学习率调度器**:**torch.optim.lr_scheduler.LambdaLR
  • 2、正儿八经的模型搭建流程以及学习率调度器的使用设置

1、自定义学习率调度器**:**torch.optim.lr_scheduler.LambdaLR

在这里插入图片描述

实验代码:

import torch
import torch.nn as nndef lr_lambda(x):return x*2net=nn.Sequential(nn.Conv2d(3,16,3,1,1))optimizer=torch.optim.SGD(net.parameters(),lr=0.01,momentum=0.9)lr_scheduler=torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda=lr_lambda)for _ in range(10):optimizer.step()lr_scheduler.step()print(optimizer.param_groups[0]['lr'])

打印结果:
在这里插入图片描述
分析数据变化如下图所示:
在这里插入图片描述

2、正儿八经的模型搭建流程以及学习率调度器的使用设置

在这里插入图片描述
代码:

import torch
import torch.nn as nn
import numpy as npdef create_lr_scheduler(optimizer,num_step:int,epochs:int,warmup=True,warmup_epochs=1,warmup_factor=1e-3):assert num_step>0 and epochs>0if warmup is False:warmup_epochs=0def f(x):"""根据step数,返回一个学习率倍率因子,注意在训练开始之前,pytorch会提前调用一次create_lr_scheduler.step()方法"""if warmup is True and x <= (warmup_epochs * num_step):alpha=float(x) / (warmup_epochs * num_step)# warmup过程中,学习率因子(learning rate factor):warmup_factor -----> 1return warmup_factor * (1-alpha) + alphaelse:# warmup后,学习率因子(learning rate factor):warmup_factor -----> 0return (1-(x - warmup_epochs * num_step) / (epochs-warmup_epochs * num_step)) ** 0.9return torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda=f)net=nn.Sequential(nn.Conv2d(3,16,1,1))
optimizer=torch.optim.SGD(net.parameters(),lr=0.01,momentum=0.9)lr_scheduler=create_lr_scheduler(optimizer=optimizer,num_step=5,epochs=20,warmup=True)image=(np.random.rand(1,3,64,64)).astype(np.float32)
image_tensor=torch.tensor(image.copy(),dtype=torch.float32)
print(image.dtype)for epoch in range(20):net.train()predict=net(image_tensor)optimizer.zero_grad()optimizer.step()lr_scheduler.step()print(optimizer.param_groups[0]['lr'])   # 打印学习率变化情况

在这里插入图片描述

http://www.lryc.cn/news/190636.html

相关文章:

  • 【JUC系列-12】深入理解PriorityQueue的底层原理和基本使用
  • Paddle安装
  • 配置XP虚拟机和Win 10宿主机互相ping通
  • 【机器学习】sklearn对数据预处理
  • 【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层
  • Tomcat隔离web原理和热加载热部署
  • 使用ffmpeg和python脚本下载网络视频m3u8(全网最全面)
  • 【考研408常用数据结构】C/C++实现代码汇总
  • Flink学习笔记(二):Flink内存模型
  • 信息系统项目管理师第四版学习笔记——项目绩效域
  • PyTorch 深度学习之加载数据集Dataset and DataLoader(七)
  • 小谈设计模式(26)—中介者模式
  • 7种设计模式
  • el-table合计行合并
  • 新手如何快速上手HTTP爬虫IP?
  • (十五)VBA常用基础知识:正则表达式的使用
  • vue配置@路径
  • Ubuntu 18.04 OpenCV3.4.5 + OpenCV3.4.5 Contrib 编译
  • 【网络基础】IP 子网划分(VLSM)
  • 【OCR】合同上批量贴印章
  • Stable diffusion 用DeOldify给黑白照片、视频上色
  • 在服务器上解压.7z文件
  • 【opencv】windows10下opencv4.8.0-cuda C++版本源码编译教程
  • 软碟通制作启动盘
  • Tomcat和HPPT协议
  • Acwing.4736步行者(模拟)
  • 前端预览、下载二进制文件流(png、pdf)
  • 搞定ESD(三):ESD干扰耦合路径深入分析(一)
  • 广州华锐互动:炼钢工厂VR仿真实训系统
  • 适用于音视频的弱网测试整理