news 2026/6/24 3:48:53

深度学习系列之第七课卷积神经网络_CNN_调整学习率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习系列之第七课卷积神经网络_CNN_调整学习率

目录

简介

一、调整学习率

1.有序调整学习率

1.1StepLR(等间隔调整学习率)

1.2MultiStepLR(多间隔调整学习率)

1.3 ExponentialLR (指数衰减调整学习率)

1.4CosineAnnealing (余弦退火函数调整学习率)

2.自适应调整

2.1ReduceLROnPlateau (根据指标调整学习率)

3.自定义调整

3.1LambdaLR (自定义调整学习率)

二、代码分析

1. 导入必要的库

2. 数据预处理部分

3. 自定义数据集类

4. 数据加载器

5. 设备配置

6. 定义 CNN 模型

7. 训练函数

8. 测试函数

9. 训练配置和执行

简介

之前我们对数据进行增强、有保存和使用最佳模型,今天我们再对模型进行最后的优化,就是调整我们的学习率,在这之前我们一直使用的是固定的学习率来训练模型。

深度学习系列之第五课卷积神经网络_CNN_如何训练自己的数据集(暨食物分类案例)

[深度学习之第六课卷积神经网络 (CNN)如何保存和使用最优模型][_CNN 1]

一、调整学习率

Pytorch学习率调整策略通过 torch.optim.lr_sheduler 接口实现。并提供3种调整方法:

(1)有序调整:等间隔调整(Step),多间隔调整(MultiStep),指数衰减(Exponential),余弦退火(CosineAnnealing);

(2)自适应调整:依训练状况伺机而变,通过监测某个指标的变化情况(loss、accuracy),当该指标不怎么变化时,就是调整学习率的时机(ReduceLROnPlateau); (

(3)自定义调整:通过自定义关于epoch的lambda函数调整学习率(LambdaLR)。

1.有序调整学习率

1.1StepLR(等间隔调整学习率)
torch.optim.lr_scheduler.StepLR(optimizer,step_size,gamma=0.1)

参数:

optimizer: 神经网络训练中使用的优化器,如optimizer=torch.optim.Adam(…)

step_size(int): 学习率下降间隔数,单位是epoch,而不是iteration.

gamma(float):学习率调整倍数,默认为0.1 每训练step_size个epoch,学习率调整为lr=lr*gamma.

1.2MultiStepLR(多间隔调整学习率)
torch.optim.lr_shceduler.MultiStepLR(optimizer,milestones,gamma=0.1)

参数:

milestone(list): 一个列表参数,表示多个学习率需要调整的epoch值,如milestones=[10, 30, 80].

1.3 ExponentialLR (指数衰减调整学习率)
torch.optim.lr_scheduler.ExponentialLR(optimizer,gamma)

参数:

gamma(float):学习率调整倍数的底数,指数为epoch,初始值我lr, 倍数为

1.4CosineAnnealing (余弦退火函数调整学习率)
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer,T_max,eta_min=0)

参数:

Tmax(int):学习率下降到最小值时的epoch数,即当epoch=T_max时,学习率下降到余弦函数最小值,当epoch>T_max时,学习率将增大;

etamin: 学习率调整的最小值,即epoch=Tmax时,lrmin=etamin, 默认为0.

2.自适应调整

2.1ReduceLROnPlateau (根据指标调整学习率)
torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,mode='min',factor=0.1,patience=10,verbose=False,threshold=0.0001,threshold_mode='rel',cooldown=0,min_lr=0,eps=1e-08)

3.自定义调整

3.1LambdaLR (自定义调整学习率)
torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda)

参数:

lr_lambda(function or list): 自定义计算学习率调整倍数的函数,通常时epoch的函数,当有多个参数组时,设为list.

二、代码分析

1. 导入必要的库
importtorchfromtorch.utils.dataimportDataLoader,DatasetfromPILimportImagefromtorchvisionimporttra
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 17:38:44

keil5破解替代方案:学习用途的合规路径

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。全文已彻底去除AI生成痕迹、模板化表达和刻板章节标题,转而采用 真实嵌入式教学博主的口吻与节奏 :有实战痛点、有踩坑经验、有代码细节、有教学思考,语言专业但不晦涩&a…

作者头像 李华
网站建设 2026/6/15 11:25:44

想换数据集?self_cognition.json自定义方法详解

想换数据集?self_cognition.json自定义方法详解 你是否试过让大模型“改口”——不是靠提示词临时引导,而是真正记住“我是谁”?比如把默认的“我是阿里云研发的大模型”,换成“我由CSDN迪菲赫尔曼开发和维护”。这不是魔法&…

作者头像 李华
网站建设 2026/6/16 10:27:29

3种直播内容管理方案:从基础保存到商业级资源库构建

3种直播内容管理方案:从基础保存到商业级资源库构建 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 一、直播内容保存的现实挑战与应用场景 在数字化内容爆炸的时代,直播作为实时互动…

作者头像 李华
网站建设 2026/6/15 20:56:07

软件安装与故障排除全指南:BetterNCM插件管理器安装教程

软件安装与故障排除全指南:BetterNCM插件管理器安装教程 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 本安装教程将系统讲解BetterNCM插件管理器的完整部署流程&#xff…

作者头像 李华
网站建设 2026/6/15 20:54:33

FSMN VAD会议纪要生成:语音段落划分基础

FSMN VAD会议纪要生成:语音段落划分基础 在会议场景中,原始录音往往包含大量静音、咳嗽、翻页、环境噪声等非语音内容。直接将整段录音丢给ASR(自动语音识别)模型,不仅浪费算力,还会导致识别结果碎片化、上…

作者头像 李华