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

深度学习04 数据增强、调整学习率

目录

数据增强

常用的数据增强方法

调整学习率

学习率

调整学习率

​调整学习率的方法

有序调整

等间隔调整

        多间隔调整

        指数衰减

        余弦退火

​自适应调整

自定义调整

数据增强

数据增强是通过对训练数据进行各种变换(如旋转、翻转、裁剪等),生成新的训练样本,从而增加数据的多样性。它的主要目的是:

  • 提高模型的泛化能力。

  • 防止过拟合。

  • 在数据量不足的情况下,有效扩展数据集。

常用的数据增强方法

  1. 随机翻转(Random Flip)

    水平翻转:RandomHorizontalFlip         垂直翻转:RandomVerticalFlip
  2. 随机旋转(Random Rotation)

    随机旋转一定角度,例如 RandomRotation(30) 表示在 [-30°, 30°] 范围内随机旋转。
  3. 随机裁剪(Random Crop)

    随机裁剪图像的一部分,例如 RandomResizedCrop(256) 表示随机裁剪并调整大小为 256x256。
  4. 颜色变换(Color Jitter)

    随机调整亮度、对比度、饱和度和色调,例如 ColorJitter(brightness=0.4, contrast=0.4, saturation=0.4, hue=0.1)
  5. 高斯噪声(Gaussian Noise)

    为图像添加随机噪声。
  6. 归一化(Normalization)

    将图像像素值归一化到特定范围,例如 Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

例如:定义训练集和验证集的图像的数据增强模型

data_transforms = {'train':   transforms.Compose([  # transforms.Compose用于将多个图像预处理操作整合在一起transforms.Resize([300,300]),   # 使图像变换大小transforms.RandomRotation(45),   # 随机旋转,-42到45度之间随机选transforms.CenterCrop(256),    # 从中心开始裁剪[256.256]transforms.RandomHorizontalFlip(p=0.5),  # 随机水平旋转,随机概率为0.5transforms.RandomVerticalFlip(p=0.5),  # 随机垂直旋转,随机概率0.5transforms.ColorJitter(brightness=0.2,contrast=0.1,saturation=0.1,hue=0.1),   # 随机改变图像参数,参数分别表示 亮度、对比度、饱和度、色温transforms.RandomGrayscale(p=0.1),  # 概率转换成灰度率,3通道就是R=G=Btransforms.ToTensor(),   # 将PIL图像或NumPy ndarray转换为tensor类型,并将像素值的范围从[0, 255]缩放到[0.0, 1.0],默认把通道维度放在前面transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])  # 给定均值和标准差对图像进行标准化,前者为均值,后者为标准差,三个值表示三通道图像]),'valid':  # 验证集transforms.Compose([   # 整合图像处理的操作transforms.Resize([256,256]),   # 缩放图像尺寸transforms.ToTensor(),   # 转换为torch类型transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])    # 标准化])
} 

嵌套定义好的数据增强模型

training_data=food_dataset(file_path=r'./train.txt',transform=data_transform['train'])
test_data=food_dataset(file_path=r'./test.txt',transform=data_transform['valid'])

调整学习率

学习率

  • 定义

    学习率是优化算法(如 SGD、Adam)中的一个超参数,控制模型参数的更新步长。

  • 作用

    • 如果学习率太大,可能导致参数更新过快,无法收敛甚至发散。

    • 如果学习率太小,训练速度会变慢,可能陷入局部最优。

  • 重要性:合适的学习率是模型训练成功的关键。

调整学习率

学习率调整(Learning Rate Scheduling) 是优化模型训练的关键技术之一。深度学习中的学习率决定了模型参数在每次更新时的步长大小,合适的学习率可以加速收敛并提高模型的性能。常用的学习率有0.1、0.01以及0.001等,学习率越大则权重更新越快。一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在训练后期学习率小一些,使得网络更好的收敛到最优解。

目的

调整学习率的目的是为了能够更好地优化模型,避免训练过程中出现的一些问题,如梯度爆炸或梯度消失、训练过程陷入局部极小值等

调整学习率的方法

不同方法调整学习率所对应的横轴epoch值与纵轴学习率的关系如图

PyTorch 提供了多种学习率调度器,位于 torch.optim.lr_scheduler 模块中。

有序调整
等间隔调整
多间隔调整

指数衰减

余弦退火
自适应调整

自定义调整

相关文章:

深度学习04 数据增强、调整学习率

目录 数据增强 常用的数据增强方法 调整学习率 学习率 调整学习率 ​调整学习率的方法 有序调整 等间隔调整 多间隔调整 指数衰减 余弦退火 ​自适应调整 自定义调整 数据增强 数据增强是通过对训练数据进行各种变换(如旋转、翻转、裁剪等)&am…...

2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建

​有问题请留言或主页私信咨询 2023年全国职业院校技能大赛 GZ073网络系统管理赛项 赛题第10套 模块A:网络构建 ​ ​ **目 **录 任务清单 (一)基础配置 (二)有线网络配置 (三)无线…...

2023年河北省职业院校技能大赛网络系统管理赛项样题解法

​ 有问题请留言或主页私信咨询 配置文件有部分测试时的冗余配置无视即可。 解法只有大致解法,并不完整。请参考配置,自己补全 基础配置 1.所有交换机和无线控制器开启SSH服务,用户名密码分别为admin、admin1234;密码为明文类…...

vite+vue3开发uni-app时低版本浏览器不支持es6语法的问题排坑笔记

重要提示:请首先完整阅读完文章内容后再操作,以免不必要的时间浪费!切记!!!在使用vitevue3开发uni-app项目时,存在低版本浏览器不兼容es6语法的问题,如“?.” “??” 等。为了方便…...

Linux系统编程基础详解

Linux 系统详解 大纲 引言 Linux 的定义Linux 的历史与发展本文结构概述 Linux 的基本概念 Linux 的架构 内核与用户空间系统调用 Linux 的文件系统 文件与目录结构权限管理 Linux 的进程管理 进程与线程进程调度 Linux 的基本命令与操作 常用命令概述 文件与目录操作命令文…...

钉钉应用开发

一.开发调试工具认识与安装 选择微应用调试工具-RC版 微应用调试工具—RC版 - 钉钉开放平台(下载和使用说明) 案例 创建一个钉钉应用 开发工具和安装包 vscode 开发环境 预装node.js---- https://nodejs.org/zh-cn --npm是随Node.js一起安装的 在…...

打破限制!自定义 Hooks 如何提升 React 组件的灵活性

本周开发监控项目,我发现了很多的 React 类组件封装,发现出现了多次UI渲染的情况、代码辨识度也较差,对性能和维护都产生了挑战。这里多个场景的都是状态管理和逻辑复用需求,其实完全没有必要封装类组件。相反我通过引入 React 自…...

使用arthas测试接口响应时间

一、下载解压 git下载地址: https://github.com/alibaba/arthas/releases 二、启动和选择Java进程 java -jar arthas-boot.jar选择需要测试的java进程,我输入1然后回车 三、使用trace命令 trace 全路径 方法名 trace com.xxx.b2b.mall.goods.service…...

Vue3.x的深度选择器详细解读

在 Vue 3 中&#xff0c;深度选择器&#xff08;Deep Selector&#xff09;用于在 <style scoped> 中穿透作用域样式&#xff0c;影响子组件的样式。Vue 3 中深度选择器的语法与 Vue 2 有所不同&#xff0c;以下是详细说明&#xff1a; 1. 深度选择器的作用 在 Vue 的单…...

基于Python的Diango旅游数据分析推荐系统设计与实现+毕业论文(15000字)

基于Python的Diango旅游数据分析推荐系系统设计与实现毕业论文指导搭建视频&#xff0c;带爬虫 配套论文1w5字 可定制到某个省份&#xff0c;加40 基于用户的协同过滤算法 有后台管理 2w多数据集 可配套指导搭建视频&#xff0c;加20 旅游数据分析推荐系统采用了Python语…...

Django ModelForm使用(初学)

1.目的是根据员工表字段&#xff0c;实现一个新增员工的数据填写页面 2.在views.py文件中按下面的格式写 定义 ModelForm 类&#xff1a;UserModelForm &#xff08;自己命名的类名&#xff09;使用时需要导入包 定义视图函数&#xff1a;user_model_form_add&#xff08;在函…...

android ViewPager 管理 Fragment的预加载onCreate

一、前言 当ViewPager 加载多个 Fragment时候&#xff0c;怎么管理Fragment预加载。因为有些数据需要提前加载&#xff0c;第一个方便后面数据使用&#xff0c;提前初始化。或者预加载网络数据等。 二、实现示例 在onCreate方法进行数据预加载。如果在onCreateView函数里面&…...

运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了

智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。充分利用现有…...

国产编辑器EverEdit -告别东找西找!一键打开当前文件所在目录!

1 文件操作 2 应用场景 在文件编辑过程中&#xff0c;有时需要对文件进行一些操作&#xff0c;比如&#xff1a;在命令窗口输入文件路径、文件名&#xff0c;进入到文件目录&#xff0c;对文件进行压缩等&#xff0c;如果没有直达命令&#xff0c;用户需要通过文件管理器找到目…...

【分治法】线性时间选择问题

问题描述 给定线性序列中n个元素和一个整数k&#xff0c;1≤k≤n&#xff0c;要求在线性时间中找出这n个元素中第k小的元素 常规思路 常规思路是对序列先排序&#xff0c;落在第k个位置的元素就是第k小的元素。 这种方法的时间复杂度不是线性的&#xff0c;是O(nlogn)的时间…...

SpringBoot速成(16)项目部署P30

部署是一个非常重要的环节。部署的目的是将开发完成的程序运行在服务器上&#xff0c;让其他用户或系统能够访问和使用它。 让程序对外提供服务 开发环境的局限性&#xff1a;开发环境通常是本地计算机&#xff0c;仅供开发人员使用。但实际应用需要让其他用户&#xff08;比如…...

【Mysql:数据库的基础操作】

目录 数据库创建&#xff0c;删除基础指令&#xff1a; 数据库的编码集&#xff1a; 数据库备份与恢复&#xff1a; 表的操作&#xff1a; 数据库创建&#xff0c;删除基础指令&#xff1a; show databases;//查看数据库列表//创建数据库 create database db_name; crea…...

Nacos Derby 远程命令执行漏洞修复建议

由于Nacos < 2.4.0 BETA 存在 Derby 远程命令执行漏洞&#xff0c;恶意攻击者利用此漏洞可以未授权执行SQL语句&#xff0c;最终导致任意代码执行。目前该漏洞PoC和技术细节已在互联网上公开。 一、漏洞情况分析 Nacos 是一个功能强大的服务注册与发现、配置管理平台&#…...

idea 2023.3.7常用插件

idea 2023.3.7常用插件 文档 idea 2019.3常用插件idea 2023.3.7常用插件 idea 2023.3.7常用插件 插件名称插件版本说明1AceJump3.5.9AceJump允许您快速将插入符号导航到编辑器中可见的任何位置。只需按“ctrl&#xff1b;”&#xff0c;键入一个字符&#xff0c;然后在Ace …...

DeepSeek和ChatGPT在科研课题设计和SCI论文写作中的应用

DeepSeek和ChatGPT在科研课题设计和SCI论文写作中的应用 一、DeepSeek和ChatGPT的基础理论 (理论讲解案例分析) 1.DeepSeek的技术架构 (1)DeepSeek的定义与核心目标 (2)DeepSeek的主要类型 如DeepSeek-R1、DeepSeek-V3等 (3)DeepSeek的主要创新点、优势能力以及主要应用场景 2.…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...