当前位置: 首页 > 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.…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...