迁移学习|ResNet18

一、导入库

二、设置随机种子

三、数据增强和数据加载

四、加载预训练模型

五、定义损失函数和优化器

六、学习率调度器

七、训练模型

 

八、可视化训练过程

九、总结 

1. 常见优化器概述

1.1 随机梯度下降(SGD: Stochastic Gradient Descent)

简介: SGD 是最基本的优化算法,通过在每个小批量(mini-batch)数据上计算梯度并更新模型参数。

优点:

  • 简单易实现。
  • 对大规模数据集和高维参数空间表现良好。

缺点:

  • 对学习率敏感,需要精心调整。
  • 可能在鞍点和局部最优点处停滞。
  • 收敛速度较慢,尤其是在非凸优化问题中。

适用场景:

  • 基础模型训练。
  • 需要精细控制训练过程的场景。

1.2 带动量的 SGD(SGD with Momentum)

简介: 在标准 SGD 的基础上引入动量概念,利用之前梯度的累积来加速收敛并减少震荡。

优点:

  • 提高了收敛速度。
  • 有助于跨越鞍点和陡峭的局部最优点。

缺点:

  • 需要调节动量参数,增加了超参数的复杂性。

适用场景:

  • 大多数深度学习任务,尤其是卷积神经网络(CNN)等。

1.3 自适应矩估计(Adam: Adaptive Moment Estimation)

简介: Adam 结合了动量和 RMSProp 的优点,利用一阶矩(均值)和二阶矩(未中心化的方差)来动态调整学习率。

优点:

  • 对学习率不敏感,适合各种网络结构。
  • 通常具有较快的收敛速度。
  • 内部有偏差校正,适用于小批量数据。

缺点:

  • 在某些情况下可能导致收敛到次优点。
  • 需要更多的内存来存储一阶和二阶矩。

适用场景:

  • 各类深度学习任务,特别是自然语言处理(NLP)和生成对抗网络(GAN)等需要快速收敛的场景。

1.4 RMSProp

简介: RMSProp 通过对每个参数使用不同的学习率,适应性地调整学习率大小,解决了 Adagrad 的学习率单调下降的问题。

优点:

  • 适用于非平稳目标。
  • 通常比 SGD 收敛更快。

缺点:

  • 对超参数(如学习率和衰减率)敏感。
  • 可能在某些任务上表现不如 Adam。

适用场景:

  • 循环神经网络(RNN)和需要处理非平稳数据的任务。

1.5 AdamW

简介: AdamW 改进了 Adam 的权重衰减方式,将权重衰减从梯度更新中分离出来,解决了 Adam 在使用 L2 正则化时的一些问题。

优点:

  • 更好地结合了权重衰减和 Adam 的自适应学习率特性。
  • 在一些任务上表现优于 Adam。

缺点:

  • 类似于 Adam,需要更多的内存。
  • 需要调节额外的权重衰减参数。

适用场景:

  • Transformer 模型和需要严格控制正则化的场景。

2. 如何选择合适的优化器

选择优化器时,需要根据具体任务、模型结构、数据集特点以及训练资源等因素进行权衡。以下是一些建议:

2.1 模型复杂度和规模

  • 大型模型(如 ResNet、Transformer):通常推荐使用 Adam 或 AdamW,因其自适应学习率特性能更有效地处理大规模参数。
  • 中小型模型:SGD 或带动量的 SGD 也是不错的选择,尤其是在需要严格控制训练过程时。

2.2 数据集大小和特性

  • 大规模数据集:SGD 和带动量的 SGD 更加适合,因其在大数据集上表现稳定。
  • 小规模或稀疏数据集:Adam 更具优势,因其在小批量数据上能更好地调整学习率。

2.3 训练速度和资源

  • 需要快速原型验证:Adam 是理想选择,因其收敛速度快,适合快速实验。
  • 资源有限:SGD 相对更节省内存,适合资源受限的环境。

2.4 收敛性质

  • 需要精确收敛:SGD 和带动量的 SGD 通常能更好地收敛到更优解。
  • 对超参数敏感度低:Adam 具有较强的自适应能力,对学习率不敏感。

3. 超参数调节建议

不同优化器有不同的超参数,需要根据具体情况进行调节:

3.1 学习率(Learning Rate)

  • SGD:常用范围在 0.01 到 0.1。可以使用学习率调度器(如 StepLR、ReduceLROnPlateau)动态调整。
  • Adam:常用初始学习率为 0.001,可以在需要时调低。
  • RMSProp:初始学习率通常设置为 0.01。

3.2 动量(Momentum)

  • 仅适用于带动量的 SGD。
  • 常用值在 0.8 到 0.99 之间。

3.3 权重衰减(Weight Decay)

  • 控制正则化强度,常用值在 1e-4 到 1e-3 之间。
  • AdamW 中的权重衰减与 L2 正则化结合更为有效。

3.4 其他参数总结

  • Adam 的 β 参数:常用默认值 β1=0.9, β2=0.999。
  • RMSProp 的 α 参数:通常设置为 0.99 或 0.9。
  • SGD:适用于需要严格控制训练过程的大规模模型,具有良好的收敛性质,但对学习率敏感。
  • Adam:具有自适应学习率特性,适用于快速实验和各种模型,但可能在某些情况下收敛到次优点。
  • AdamW:改进了 Adam 的权重衰减方式,适用于需要严格控制正则化的场景。
  • RMSProp:适用于处理非平稳目标的问题,如循环神经网络(RNN)。
  • 学习率调度器早停等技术可以进一步提升训练效果和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS系统Nginx的安装部署

CentOS系统Nginx的安装部署 安装包准备 在服务器上准备好nginx的安装包 nginx安装包下载地址为:https://nginx.org/en/download.html 解压 tar -zxvf nginx-1.26.1.tar.gz执行命令安装 # 第一步 cd nginx-1.26.1# 第二步 ./configure# 第三步 make# 第四步 mak…

基于RabbitMQ,Redis,Redisson,RocketMQ四种技术实现订单延时关闭功能及其相关优缺点介绍(以12306为主题)

目录 1. 延迟关闭订单 1.1 订单延时关闭功能技术选型 1.1.1 定时任务 1.1.2 RabbitMQ 1.1.3 Redis 过期监听 1.1.4 Redisson 1.1.5 RocketMQ 1.2 RocketMQ订单延时关闭发送方实现 1.3 RocketMQ订单延时关闭的消费方实现 1. 延迟关闭订单 用户发起订单后,如…

校园表白墙源码修复版

此校园表白墙源码基于thinkphp,因为时代久远有不少bug,经本人修复已去除大部分bug,添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…

Etcd 可观测最佳实践

简介 Etcd 是一个高可用的分布式键值存储系统,它提供了一个可靠的、强一致性的存储服务,用于配置管理和服务发现。它最初由 CoreOS 开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。Etcd 使用 Raft 算法来实现数据的一致性&…

AI运动抽取转3D动画

用的Wonder Studio,不免费哈,也不能试了,都要钱。只能看别人的经验。 网址https://wonderdynamics.com/ 先别激动,参考别人的评论 登录后(google登录)界面如下 收费情况 视频教程 https://www.youtube.co…

【记录】VSCode|自用设置项

文章目录 1 基础配置1.1 自动保存1.2 编辑区自动换行1.3 选项卡换行1.4 空格代替制表符1.5 开启滚轮缩放 2 进阶设置2.1 选项卡不自我覆盖2.2 选项卡限制宽度2.3 选项卡组限制高度2.4 字体设置2.5 字体加粗2.6 侧边栏2.7 沉浸式代码模式 Zen Mode2.8 设置 Zen 模式的选项卡组 3…

深入了解 kotlinx-datetime:配置与使用指南

深入了解 kotlinx-datetime:配置与使用指南 在Kotlin多平台开发中,处理日期和时间是常见的需求。kotlinx-datetime库提供了强大且简洁的API来帮助开发者应对这一挑战。本文将详细介绍如何配置kotlinx-datetime库,并通过生动的示例演示其核心…

远程:HTTP基本身份验证失败。提供的密码或令牌不正确,或者您的账户启用了两步验证,您必须使用个人访问令牌而不是密码。

问题描述: remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token insteadof a password. See http://gitlab.cnovit.com/help/topics/git/troubleshooting…

从 Hadoop 迁移到数据 Lakehouse 的架构师指南

从 Hadoop 到数据湖仓一体架构的演变代表了数据基础架构的重大飞跃。虽然 Hadoop 曾经以其强大的批处理能力统治着大数据领域,但如今的组织正在寻求更敏捷、更具成本效益和现代化的解决方案。尤其是当他们越来越多地开始实施 AI 计划时。根本没有办法让 Hadoop 为 A…

C++ 类与对象(中) 默认成员函数

我们知道在类中,有成员变量和成员函数,我们可以通过创造不同的成员函数来实现这个类不同的功能,如果我们创造一个类,却不实现它的成员函数会如何呢?这个就涉及到类中的默认成员函数的概念了。但在本文我们主要介绍以下…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件,它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

WebView渲染异常导致闪退解决方案

背景: App主页面使用了大量WebView容器(10个以上)显示图表信息,最新发现bugly上面出现一些关于浏览器Native Crash,如下: 经排查,是WebView渲染失败导致Crash,可以通过webView.loadUrl("chrome://cra…

Pycharm搭配miniConda(Anaconda的轻量版本)建立虚拟环境管理不同项目不同依赖

需求 pip安装的版本会在全局环境下生效,导致不用的项目使用的是同一套环境,容易出现别人的项目跑的好好的,到了自己电脑就不能跑的问题需求 1.不同的项目可以设置不同的环境,同时支持自动切换环境2.便捷,轻量化管理当前的环境 如果可以,最好有一个可视化的平台,anaconda倒是支…

图像分割-DeepLab

DeepLabV3源码链接:https://github.com/bubbliiiing/deeplabv3-plus-pytorch(打不开私信我获取) 一、简介 一般的模型如Unet一般用于医学领域,小目标,如细胞分割。 为了增大感受野(从而更好的获得全局特征…

docker 镜像详解

Docker镜像是一种轻量级、可移植的软件打包格式,它包含了运行应用程序所需的一切,是构建和分发应用程序的基础。以下是对Docker镜像的详细解释: 一、镜像的定义 镜像本质上是一个只读文件,包含了文件系统、源码、库文件、依赖、…

wordcloud 字体报错

wordcloud 字体报错 词云库报错:Only supported for TrueType fonts字体文件问题pillow版本的问题wordcloud版本问题(我的最终解决方案) 词云库报错:Only supported for TrueType fonts 字体文件问题 解决方法 写绝对路径 &…

【CSS3】css开篇基础(4)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

二百七十一、Kettle——ClickHouse增量导入数据清洗记录表

一、目的 在完成错误数据表任务后,需要对每条错误数据的错误字段及其字段值进行分析 Hive中原有SQL语句和ClickHouse现有SQL语句很大不同 二、Hive中原有代码 2.1 表结构 --31、静态排队数据清洗记录表 create table if not exists hurys_db.dwd_data_clean_…

洞察前沿趋势!2024深圳国际金融科技大赛——西丽湖金融科技大学生挑战赛技术公开课指南

在当前信息技术与“互联网”深度融合的背景下,金融行业的转型升级是热门话题,创新与发展成为金融科技主旋律。随着区块链技术、人工智能技术、5G通信技术、大数据技术等前沿科技的飞速发展,它们与金融领域的深度融合,正引领着新型…

uniapp:sqlite最详细教程,小白可直接粘贴复制

新建uniapp项目,需要4个页面, loading 启动页:打开数据库,判断数据表是否存在,表内是否有数据,创建数据表的逻辑。 register 注册页:数据表已存在,但是没有数据,需要进入该页面注册第一条数据 index 首页:展示数据列表内的数据,可修改默认,添加新数据 edit 编辑:编…