迁移学习|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)。
  • 学习率调度器早停等技术可以进一步提升训练效果和稳定性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++图形库

建议大家多逛逛GitHub,特别是DevWeekly,它每周都会筛选一些优秀的开源项目、开源工具、技术文章等,可以多去看看。接下来不废话了,列举一些我认为较好的C图形库,希望对大家学习有帮助。 NanoVG NanoVG是一个2D图形库…

使用yield压平嵌套字典有多简单?

我们经常遇到各种字典套字典的数据,例如: nest_dict {a: 1,b: {c: 2,d: 3,e: {f: 4}},g: {h: 5},i: 6,j: {k: {l: {m: 8}}} } 有没有什么简单的办法,把它压扁,变成: {a: 1,b_c: 2,b_d: 3,b_e_f: 4,g_h: 5,i: 6,j_k_l_…

【Linux系统内核探索】进程调度

文章目录 进程调度什么是进程调度?进程调度算法task_struct的链式结构 总结 进程调度 什么是进程调度? 进程调度是操作系统内核的核心功能之一,负责在多个进程之间分配CPU时间,使得系统能够同时运行多个进程。因为计算机的CPU资…

MongoDB的基本操作

🌷数据库准备 🎈Mongoshell 1.在指定目录下创建mongodb文件夹、其子文件log和data以及mongodb.log cd /home/ubuntu mkdir -p mongodb/data mkdir -p mongodb/log touch mongodb/log/mongodb.log 执行mongodb命令启动mongdb服务 mongod --dbpath /h…

SwiftUI:单个App支持设置多语言

SwiftUI 全新多语言方案 简化本地化的字符串- WWDC21 - 视频 本地化您的SwiftUI app - WWDC21 - 视频 构建全球化App:本地化的示例- WWDC22 - 视频 构建支持多语言的App - WWDC24 - 视频 单个App支持设置多语言 工程 Info.plist里添加 键值UIPrefersShowingLangua…

DDD重构-实体与限界上下文重构

DDD重构-实体与限界上下文重构 概述 DDD 方法需要不同类型的类元素,例如实体或值对象,并且几乎所有这些类元素都可以看作是常规的 Java 类。它们的总体结构是 Name: 类的唯一名称 Properties:属性 Methods: 控制变量的变化和添加行为 一…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode(独立服务器模式) 2、two server mode(双服务器模式) 3、distributed multiple-executor mode(分布式多…

Threejs 实现3D 地图(01)创建基本场景

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…

Vertx实现一个通用的MqttServer

mqtt协议介绍 简介 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅范式的“轻量级”消息协议&#xff0c;由 IBM 发布。 IoT 设备要运作&#xff0c;就必须连接到互联网&#xff0c;设备才…

数据分析-Apache_hive

任务一 创建库及外部表 在 comm 数 据 库 下 创 建 一 个 名 为 dws_behavior_log的外部表&#xff0c;如果表已存在&#xff0c;则先删除&#xff1b;分 区字段为dt&#xff0c;即根据日期进行分区&#xff1b;另外&#xff0c;要求指定表的存 储路径为HDFS的/behavior/dws/d…

java让系统直接播放音频/java获取音频流输送到播放设备SourceDataLine

Java Sound API支持常见的格式&#xff1a; WAV&#xff08;Waveform Audio File Format&#xff09; 常见的无损音频格式&#xff0c;支持 PCM&#xff08;脉冲编码调制&#xff09;编码。 AIFF&#xff08;Audio Interchange File Format&#xff09; 主要用于 Macintosh 系统…

OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 K-最近邻&#xff08;K-nearest neighbours, KNN&#xff09;基于的背景/前景分割算法。 该类实现了如 319中所述的 K-最近邻背景减除。如果前景…

058_基于python时尚女装抖音号评论数据分析系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

智慧城管综合管理系统源码,微服务架构,基于springboot、vue+element+uniapp技术开发,支持二次开发

智慧城管源码&#xff0c;智慧城管执法办案系统源码 智慧城管综合执法办案平台是智慧城市框架下&#xff0c;依托物联网、云计算、多网融合等现代化技术&#xff0c;运用数字基础资源、多维信息感知、协同工作处置、智能化辅助决策分析等手段&#xff0c;形成具备高度感知、互联…

C++共同体

共同体是一种数据格式&#xff0c;他能储存不同的数据类型&#xff0c;但是同一时间只能储存其中的一种类型。 语法&#xff1a; union 共同体名 { 成员一的数据类型 成员名一&#xff1b; 成员二的数据类型 成员名二&#xff1b; 成员n的数据类型 成员名n&#xff1b; }

目标检测算法-YOLOV11解析

原文首发于微信公众号 微信公众号-人工智能与图像处理&#xff1a;目标检测算法-YOLOV11解析 一&#xff0c;YOLOV11概述 YOLOv11是由Ultralytics公司开发的新一代目标检测算法&#xff0c;它在之前YOLO版本的基础上进行了显著的架构和训练方法改进。整合了改进的模型结构设计…

Redis Search系列 - 第四讲 支持中文

目录 一、支持中文二、自定义中文词典2.1 Redis Search设置FRISOINI参数2.2 friso.ini文件相关配置1&#xff09;自定义friso UTF-8字典2&#xff09;修改friso.ini配置文件 三、实测中文分词效果 一、支持中文 Redis Stack 从版本 0.99.0 开始支持中文文档的添加和分词。中文…

Django+Vue智慧分析居家养老系统统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

【学习笔记】强化学习

李宏毅深度强化学习 笔记 课程主页&#xff1a;NTU-MLDS18 视频&#xff1a;youtube B站 参考资料&#xff1a; 作业代码参考 纯numpy实现非Deep的RL算法 OpenAI tutorial 文章目录 李宏毅深度强化学习 笔记1. Introduction2. Policy Gradient2.1 Origin Policy Gradient2.2…

基于大型语言模型的智能网页抓取

Google Gemini 是 Google AI 创建的大型语言模型 (LLM) 系列&#xff0c;可提供最先进的 AI 功能。Gemini 模型包括&#xff1a; Gemini Ultra — 最大、最强大的模型&#xff0c;擅长处理编码、逻辑推理和创意协作等复杂任务。可通过 Gemini Advanced&#xff08;原名 Bard&a…