news 2026/4/18 2:01:18

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

Java SpringBoot+Vue3+MyBatis 乐享田园系统系统源码|前后端分离+MySQL数据库

摘要 随着城市化进程的加快,人们对田园生活的向往逐渐增强,休闲农业和乡村旅游成为现代人放松身心的重要方式。传统的田园管理系统往往功能单一、交互性差,难以满足用户多样化需求。乐享田园系统旨在通过信息化手段优化田园资源管理&#xff…

作者头像 李华
网站建设 2026/4/15 15:47:55

Z-Image-Turbo产品摄影生成实战:咖啡杯场景参数设置详解

Z-Image-Turbo产品摄影生成实战:咖啡杯场景参数设置详解 1. 为什么选Z-Image-Turbo做产品图?真实体验告诉你 你是不是也遇到过这些情况:拍咖啡杯要反复布光三小时,修图调色又花掉一整天;找摄影师报价动辄上千&#x…

作者头像 李华
网站建设 2026/4/3 6:30:55

Z-Image-Turbo媒体行业落地:新闻配图快速生成部署教程

Z-Image-Turbo媒体行业落地:新闻配图快速生成部署教程 1. 为什么新闻编辑需要Z-Image-Turbo 每天早上六点,编辑部的灯光已经亮起。记者刚发回一条突发新闻,标题是“城市地铁新线开通首日客流破纪录”,但配图还空着——摄影记者还…

作者头像 李华
网站建设 2026/4/17 8:03:45

高效BetterNCM安装工具:网易云音乐功能扩展的智能解决方案

高效BetterNCM安装工具:网易云音乐功能扩展的智能解决方案 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为音乐客户端功能受限而困扰?这款工具让插件管理…

作者头像 李华