当前位置: 首页 > 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 模块中。

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

指数衰减

余弦退火
自适应调整

自定义调整

http://www.lryc.cn/news/539450.html

相关文章:

  • 2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建
  • 2023年河北省职业院校技能大赛网络系统管理赛项样题解法
  • vite+vue3开发uni-app时低版本浏览器不支持es6语法的问题排坑笔记
  • Linux系统编程基础详解
  • 钉钉应用开发
  • 打破限制!自定义 Hooks 如何提升 React 组件的灵活性
  • 使用arthas测试接口响应时间
  • Vue3.x的深度选择器详细解读
  • 基于Python的Diango旅游数据分析推荐系统设计与实现+毕业论文(15000字)
  • Django ModelForm使用(初学)
  • android ViewPager 管理 Fragment的预加载onCreate
  • 运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
  • 国产编辑器EverEdit -告别东找西找!一键打开当前文件所在目录!
  • 【分治法】线性时间选择问题
  • SpringBoot速成(16)项目部署P30
  • 【Mysql:数据库的基础操作】
  • Nacos Derby 远程命令执行漏洞修复建议
  • idea 2023.3.7常用插件
  • DeepSeek和ChatGPT在科研课题设计和SCI论文写作中的应用
  • kubeadm拉起的k8s集群证书过期的做法集群已奔溃也可以解决
  • 2024年河北省职业院校技能大赛网络系统管理赛项样题解法
  • 【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
  • 纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型
  • JDK 8+新特性(Stream API、Optional、模块化等)
  • 国产编辑器EverEdit - 独门暗器:自动监视剪贴板内容
  • 贪心算法-买卖股票的最佳时机
  • 文本操作基础知识:正则表达式
  • 【Scrapy】Scrapy教程6——提取数据
  • PHP 网络编程介绍
  • 【C语言】C语言 食堂自动化管理系统(源码+数据文件)【独一无二】