卷积神经网络-迁移学习
文章目录
- 一、迁移学习
- 1.定义与性质
- 2.步骤
- 二、Batch Normalization(批次归一化)
- 三、ResNet网络
- 1.核心思想
- 2.残差结构
- (1)残差块
- (2)残差结构类型
- 四、总结
一、迁移学习
迁移学习(Transfer Learning)是一种强大的机器学习方法,其核心思想是将在一个任务(源任务)上学到的知识或模型迁移到另一个相关任务(目标任务)上,以提高新任务的性能。以下是对迁移学习的详细解析:
1.定义与性质
- 定义:迁移学习是指利用已经训练好的模型,在新的任务上进行微调。迁移学习可以加快模型训练速度,提高模型性能,并且在数据稀缺的情况下也能很好地工作。
- 性质:迁移学习侧重于将已经学习过的知识迁移应用于新的问题中,以减少目标任务对大量新数据的依赖,加快模型训练速度,并提高模型的泛化能力。
2.步骤
- 选择预训练的模型和适当的层:通常,我们会选择在大规模图像数据集(如ImageNet)上预训练的模型,如VGG、ResNet等。然后,根据新数据集的特点,选择需要微调的模型层。对于低级特征的任务(如边缘检测),最好使用浅层模型的层,而对于高级特征的任务(如分类),则应选择更深层次的模型。
- 冻结预训练模型的参数:保持预训练模型的权重不变,只训练新增加的层或者微调一些层,避免因为在数据集中过拟合导致预训练模型过度拟合。
- 在新数据集上训练新增加的层:在冻结预训练模型的参数情况下,训练新增加的层。这样,可以使新模型适应新的任务,从而获得更高的性能。
- 微调预训练模型的层:在新层上进行训练后,可以解冻一些已经训练过的层,并且将它们作为微调的目标。这样做可以提高模型在新数据集上的性能。
- 评估和测试:在训练完成之后,使用测试集对模型进行评估。如果模型的性能仍然不够好,可以尝试调整超参数或者更改微调层。
二、Batch Normalization(批次归一化)
Batch Normalization(批归一化,简称BN)是一种在深度学习中广泛使用的技术,旨在加速神经网络的训练过程并提高模型的性能。
作用:
-
加速训练过程:Batch Normalization通过减少内部协变量偏移(Internal Covariate Shift),即隐藏层输入分布的变化,使得网络对初始权重选择的依赖较小,对学习率的选择也相对不敏感。这有助于加速神经网络的收敛速度。
-
提高模型性能:通过归一化操作,Batch Normalization有助于减少梯度消失和梯度爆炸问题,从而提高模型的训练稳定性和泛化能力。
-
减少过拟合:Batch Normalization在小批量样本上计算均值和方差,可以看作是对小批量样本进行一种正则化处理,有助于减少过拟合现象。
三、ResNet网络
为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)。
1.核心思想
ResNet的核心思想在于残差学习(Residual Learning),即网络学习的是输入和输出之间的残差(即差异),而不是直接学习完整的输出。这种设计有助于减少深层网络在训练过程中的信息损失,从而提高训练效率和模型性能。
2.残差结构
残差结构是深度学习中一种非常重要的网络设计思想,它通过引入直接连接来缓解梯度消失、梯度爆炸和退化问题、提升网络性能和泛化能力。
(1)残差块

一个典型的残差块包含两条路径:一条是主路径(通常由几个卷积层组成),另一条是shortcut路径(直接连接输入和输出)。主路径的输出与shortcut路径的输出相加后作为残差块的最终输出。通过这种方式,残差块能够在保持原始输入信息的同时,对输入进行进一步的特征提取和转换。
(2)残差结构类型
ResNet网络通常采用多个残差块堆叠的结构,这些残差块可以根据不同的需求和网络深度进行调整。例如,ResNet-18、ResNet-34、ResNet-50等变体在网络深度和复杂度之间做了平衡,适用于不同的应用场景。此外,ResNet网络还采用了批量归一化(Batch Normalization)等技术来加速训练过程并提高模型性能。


这里我们为大家展示ResNet-18的网络结构,并具体介绍对应的内容。如下:
- 第一步,残差网络需要的image大小固定为224x224,使用第一步就是确保我们传入的数据大小为224x224,如果不符合,可能会导致后续训练出现问题,所以这里我们可能需要运用数据增强来处理数据。
- 第二步,我们进入卷积层,一个64x7x7的卷积层,其步长为2、边缘填充为3。该卷积层通常使用较大的卷积核和步长,以快速减小特征图的尺寸,比如这里就将特征图的尺寸减小一倍变成64x112x112。
- 第三步,进行了最大池化操作,用于进一步减小特征图的尺寸并增加感受野,这里将特征图减小至64x56x56。
- 第四步,我们进入第一个残差块,内部包含两个卷积层和一个残差连接。第一个卷积层使用3x3的卷积核,步长为1,边缘填充为1,输出通道数与输入相同为64x56x56。该卷积层后通常跟着批量归一化(Batch Normalization)和ReLU激活函数。第二个同样使用3x3的卷积核,步长为1,边缘填充为1。该卷积层后也进行批量归一化和ReLU激活。将两个卷积的结果输出后与shortcut路径的输出相加,这里两者的尺寸匹配,不需要对输入特征图进行操作。下面再一次进行上序残差块的操作,得出结果再次相加。
- 第五步,这里进入到新一步的残差块,这里第一个卷积层我们将通道数进行加倍操作,由原来的64变成128,同时更改步长为2,使输出结果变成128x28x28,然后同样进行批量归一化(Batch Normalization)和ReLU激活函数。第二个卷积层进行基本一致的操作,只需要将步长更改为1即可,最后我们将输出结果与shortcut路径的输出相加,这里因为我们更改了输出通道与步长,导致两者的尺寸或通道数不匹配,所以我们需要对shortcut路径的输出进行1x1的卷积操作以调整其尺寸和通道数。然后相加并再次进行上序残差块操作。
- 第六步,下面我们按照上序步骤对其进行同样的通道与步长更改,将其由128x28x28改至256x14x14,再把256x14x14改为512x7x7。并在每次更改通道与步长时,对shortcut路径的输出进行1x1的卷积操作,与输出结果相加即可。
- 第七步,在经过8次残差块后,我们最终得到512x7x7的输出结果,对该结果进行平均池化,最后得到 FC为(512,1000)。这里最后的结果1000为ResNet_18的特征标签个数,具体运用时,我们应该更改为自己数据集的特征标签个数。可以通过下述方式更改,例如我们的数据集为20,我们可以获取ResNet_18的特征个数,然后创建一个新的全连接层,输入ResNet_18特征,然后再输入自己数据集的输出,即20。
in_features = resnet_model.fc.in_features resnet_model.fc = nn.Linear(in_features, 20)
残差结构的引入使得训练很深的卷积神经网络成为可能,并在多个图像识别任务中取得了优异的性能。通过残差学习,网络可以更容易地学习到恒等映射,从而缓解深层网络训练中的梯度问题。
四、总结
本文主要通过迁移学习为大家引入ResNet网络,为大家介绍了残差网络的两个核心结构:批次归一化与残差结构,通过这两个核心结构解决梯度消失、爆炸和退化问题。其中着重介绍了残差结构的类型与ResNet_18的网络模型与具体操作。这些核心特点使得ResNet网络能够训练得更深且性能更强,在计算机视觉和深度学习领域得到了广泛应用。
相关文章:
卷积神经网络-迁移学习
文章目录 一、迁移学习1.定义与性质2.步骤 二、Batch Normalization(批次归一化)三、ResNet网络1.核心思想2.残差结构(1)残差块(2)残差结构类型 四、总结 一、迁移学习 迁移学习(Transfer Lear…...
数据库:PL/SQL
变量 变量 建议使用V开头 作用: 用来保存一个数据 普通变量 declare --定义一个变量(保存一个数据) v_email varchar2(20); --定义变量并且赋值 v_ename varchar2(20) :张三; beginv_email :553215qq.com;dbms_output.put_line(v_email);dbms_output…...
迅雷笔试 最长相等子段数列长度 滑动窗口
👨🏫 牛马Code:最长相等子段数列长度 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashMap;public class Main {// 创建一个输入流读取器,用于读取控制台输…...
MMD模型一键完美导入UE5-VRM4U插件方案(一)
1、下载pmx模型 1、去模之屋官网下载MMD模型,模之屋 2、下载完成得到pmx和Texture文件 2、下载并启用VRM4U插件 1、下载VRM4U插件, VRM4U,点击Latest下载对应引擎版本 2、将插件放到Plugins目录,然后...
bench.sh:一行命令测试Linux服务器基准测试
简介 bench.sh 是一个 Linux 系统性能基准测试工具。它的测试结果如下图:给出服务器的整体配置信息,IO 性能,网络性能。很多人使用它测试 vps 性能。 一键运行 服务器在国外可以使用以下命令运行测试 wget -qO- bench.sh | bash复制…...
广播IP与共享IP的关系
什么是广播IP? 广播IP是指一种特殊的IP地址,用于在网络中向所有设备发送信息。广播地址通常是某个网络段的最后一个地址,例如,在一个子网掩码为255.255.255.0的网络中(即/24子网),其网络地址可…...
正则表达式和re模块
正则表达式(Regular Expression,简称Regex或RegExp)是计算机科学中的一个重要概念,它通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,通过事先定义…...
不同的浏览器、服务器和规范对 URL 长度的限制
不同的浏览器、服务器和规范对 URL 长度的限制有所不同。通常的限制如下: 1. 浏览器限制: 常见浏览器对 URL 长度的限制在 2,000 到 8,000 个字符之间。例如: Internet Explorer: 大约 2,083 个字符。Google Chrome: 理论上支持超过 32,00…...
NASA:ATLAS/ICESat-2 L3 A沿线内陆地表水数据V006数据集
目录 简介 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3A Along Track Inland Surface Water Data V006 简介 ATLAS/ICESat-2 L3 A沿线内陆地表水数据V006 ATLAS/ICESat-2 L3 A沿线内陆地表水数据V006是指由ATLAS/ICESat-2卫星获取的针对陆地…...
数据结构之链表(1),单链表
目录 前言 一、什么是链表 二、链表的分类 三、单链表 四、单链表的实现 五、SList.c文件完整代码 六、使用演示 总结 前言 本文讲述了什么是链表,以及实现了完整的单链表。 ❤️感谢支持,点赞关注不迷路❤️ 一、什么是链表 1.概念 概念:链…...
如何构建鲁棒高性能 Prompt 的方法?
你好,我是三桥君 在当今时代,利用大型语言模型如ChatGPT进行文本生成和交互已成为一种趋势。然而,要充分发挥这些模型的能力,尤其是在生产环境中,我们需要精心设计和优化我们的提示词(prompt)。…...
基于Springboot+微信小程序 的高校社团管理小程序(含源码+数据库+lw)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…...
Vue 响应式监听 Watch 最佳实践
一. 前言 上一篇文章我们学习了 watch 的基础知识,了解了它的基本使用方法及注意事项,本篇文章我们继续了解在Vue 中 响应式监听 watch 的妙用。了解 watch 的基础使用请参考上一篇文章: 详解 Vue 中 Watch 的使用方法及注意事项https://bl…...
md编辑器语法
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
RabbitMQ常用管理命令及管理后台
RabbitMQ管理命令 1、用户管理1.1、新增一个用户1.2、查看当前用户列表1.3、设置用户角色1.4、设置用户权限1.5、查看用户权限 2、RabbitMQ的web管理后台2.1、查看rabbitmq 的插件列表2.2、启用插件2.3、禁用插件2.4、访问RabbitMQ的web后台2.4、通过web页面新建虚拟主机 ./rab…...
从准备面试八股文,感悟到技术的本质
工作前几年听说过,大学最重要的几门课其实是数据结构和算法、操作系统、计算机组成原理、计算机网络。 初听时不以为然,感觉没什么用。 近期准备面试八股文得到了一些感悟。这句话随着工作年限和对程序的理解越来越深入,含金量越来越高。 最…...
云手机的默认ip地址是什么
云手机(Cloud Phone)是一种基于云计算技术的虚拟手机,它可以在云端运行,使用户能够通过互联网访问手机应用和服务。云手机的IP地址通常取决于以下几个因素: 1. 云服务提供商 不同的云服务提供商(如AWS、G…...
对接阿里asr和Azure asr
1:对接阿里asr 1.1:pom <dependency><groupId>com.alibaba.nls</groupId><artifactId>nls-sdk-recognizer</artifactId><version>2.2.1</version> </dependency>1.2:生成token package c…...
未来数字世界相关技术、应用:AR/VR/MR;数字人、元宇宙、全息显示
一、AR/VR/MR 增强现实(AR)、虚拟现实(VR)和混合现实(MR)是三种不同的技术,它们都旨在增强用户对现实世界的感知和交互体验。以下是它们的详细介绍: 增强现实(AR) 增强现实(Augmented Reality, AR) 是一种将虚拟信息叠加到现实世界中的技术。通过AR技术,用户可…...
在 Java 中提供接口方法而不是实现接口
问题 我正在阅读有关Java中的接口的文章。其中提到我们必须实现compareTo方法才能在ArrayList容器上调用sort,例如Employee类应该实现 Comparable接口。 后面解释了为什么Employee类不能简单地提供compareTo方法而不实现Comparable接口?之所以需要接口…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
