当前位置: 首页 > news >正文

模型微调

什么是预训练模型

  • 预训练模型就是已经用数据集训练好了的模型
  • 现在我们常用的预训练模型,比如:VGG16/19,Resnet等模型,并且已经用大型数据集来做训练,如:Imagenet,得到训练好的模型参数

什么情况下使用微调

  • 手头的数据集类型和预训练模型的数据集内容相似,因为不同数据集模型提取的特征不同,所以相应的参数训练后也是不同的
  • 数据集内容相似,但是数据量太少
  • 计算资源不够
  • 自己创建的模型正确率较低

为什么要微调

  • 用大型数据集训练后的模型,具备提取浅层基础特征和深层抽象特征的能力

clipboard.png

  • 浅层卷积层提取基础特征,比如:边缘,轮廓等基础特征
  • 深层卷积层提取抽象特征,比如:整个脸型
  • 全连接层根据特征组合进行评分分类

不做微调:

  • 从头开始训练模型,需要大量的数据,计算时间和计算资源
  • 存在模型不收敛,参数不够优化,准确率低,模型泛化能力低,容易过拟合等风险

做微调,可以一定程度上缓解上述存在的问题。

模型微调注意事项

  • 通常是截断预训练好网络的最后一层(softmax层),用我们自己的softmax层进行替换。如:Imagenet上预训练好的网络输出是1000个类别,我们的实际项目输出类别是10项,则可以进行上述替换。然后,我们在网络上运行预先训练的权重,确保执行交叉验证。
  • 使用较小学习率来训练网络。由于我们预计预先训练网络的权重相对于随机初始化的权重已经相当不错,我们不想过快的扭曲它们,通常做法是使初始学习率比从头开始训练的初始学习率小10倍
  • 如果手头数据集数量过少,我们可以只训练最后一层,如果数据集数量中等,我们可以冻结预训练网络的前几层权重。因为网络的前几层提取的是基础特征,如:边缘,轮廓。我们希望保持这些权重不变,让我们的网络更专注于学习后续深层中特定于数据集的特征

不同数据集下使用微调

  • 数据集少,但内容相似度高。这种情况下,我们修改最后几层或者softmax层的输出类别
  • 数据集少,内容相似度低。这种情况下,我们冻结预训练网络的初始层(比如K层),然后训练剩余的N-K层。因为数据集内容相似度低,因此我们需要对较高层进行重新训练
  • 数据集大,但内容相似度低。这种情况下,需要根据自己的数据从头开始训练神经网络
  • 数据量大,内容相似度高。这种情况下,十分理想了,预训练模型也是最有效的。使用模型的最好方法是保留模型的结构和初始权重,然后,我们可以使用预先训练的模型中的权重来重新训练该模型。

相关文章:

  • 专属程序员的西游记,不是程序员读不懂哦?
  • 第十八天-企业应用架构模式-基本模式
  • 人脸识别最新开发经验demo
  • 百度地图api文档实现任意两点之间的最短路线规划
  • 链表
  • Spark一些必须知道的概念
  • Linux系列(5)linux基础命令
  • 08r2活动目录迁移升级2012r2--(DHCP迁移)
  • 唯一分解定理
  • 关于 es6的 let 特性在 for 循环结构 的个人理解
  • 蚂蚁数据分析平台的演进及数据分析方法的应用
  • 从第一行代码开始开发区块链(二)
  • 函数组件与类有什么不同?
  • 通过find文件并对大小求和统计目录大小
  • elasticsearch 占CPU过高
  • 收藏网友的 源程序下载网
  • [deviceone开发]-do_Webview的基本示例
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【mysql】环境安装、服务启动、密码设置
  • 2019年如何成为全栈工程师?
  • export和import的用法总结
  • laravel with 查询列表限制条数
  • mockjs让前端开发独立于后端
  • Node 版本管理
  • Python学习之路16-使用API
  • React+TypeScript入门
  • React-redux的原理以及使用
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 用Python写一份独特的元宵节祝福
  • 阿里云移动端播放器高级功能介绍
  • #include到底该写在哪
  • $.each()与$(selector).each()
  • (27)4.8 习题课
  • (3)llvm ir转换过程
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Forward) Music Player: From UI Proposal to Code
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (论文阅读30/100)Convolutional Pose Machines
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .mysql secret在哪_MySQL如何使用索引
  • .Net core 6.0 升8.0
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET是什么
  • @RequestMapping处理请求异常