news 2026/5/1 10:21:41

深度学习系列之第七课卷积神经网络_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/4/30 9:15:24

3步如何零门槛高效获取抖音无水印视频?智能工具全攻略

3步如何零门槛高效获取抖音无水印视频?智能工具全攻略 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代,高效获取和管理抖音视频资源已成为内容创作者、自媒体运营…

作者头像 李华
网站建设 2026/5/1 9:59:07

Java Web 校园网上店铺设计与实现系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着互联网技术的快速发展,校园电子商务逐渐成为大学生日常生活的重要组成部分。传统的线下购物模式存在时间和空间的限制,无法满足学生多样化的消费需求。校园网上店铺系统的设计与实现旨在为学生提供一个便捷、高效的在线购物平台,解…

作者头像 李华
网站建设 2026/5/1 9:05:28

游戏效率工具:让你在鸣潮中轻松管理时间的智能助手

游戏效率工具:让你在鸣潮中轻松管理时间的智能助手 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否也曾…

作者头像 李华
网站建设 2026/5/1 8:39:44

fft npainting lama客户案例分享:某设计公司降本60%实践

FFT NPainting LaMa客户案例分享:某设计公司降本60%实践 1. 案例背景:设计公司的真实痛点 一家专注电商视觉服务的中型设计公司,日常要处理大量商品图——主图、详情页、营销海报。每张图都要反复修图:去掉拍摄支架、擦除反光点…

作者头像 李华
网站建设 2026/4/23 10:42:49

如何永久保存抖音直播?三大秘诀让你不错过任何精彩瞬间

如何永久保存抖音直播?三大秘诀让你不错过任何精彩瞬间 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经因为加班错过了爱豆的直播首秀?是否想重温那场干货满满的行业分享却…

作者头像 李华
网站建设 2026/4/24 16:17:22

Z-Image-ComfyUI开发者体验报告:易用性与稳定性评测

Z-Image-ComfyUI开发者体验报告:易用性与稳定性评测 1. 初识Z-Image-ComfyUI:不是又一个“跑通就行”的镜像 第一次在镜像广场看到Z-Image-ComfyUI时,我下意识点开文档扫了一眼——然后停住了。不是因为参数多炫酷,而是它把“开…

作者头像 李华