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

深度学习使用Keras进行迁移学习提升网络性能

上一篇文章我们用自己定义的模型来解决了二分类问题,在20个回合的训练之后得到了大约74%的准确率,一方面是我们的epoch太小的原因,另外一方面也是由于模型太简单,结构简单,故而不能做太复杂的事情,那么怎么提升预测的准确率了?一个有效的方法就是迁移学习。

迁移学习其本质就是移花接木:将其他大数据集(比如ImageNet等)上得到的网络结构及其weights应用到一个新的项目中来,比如此处的猫狗二分类问题。当然,ImageNet中肯定有猫和狗这两个类别,可以说此处的小数据集是ImageNet的一个子集,但是,对于和ImageNet完全没有任何关系的其他数据集,迁移学习也有一定的效果,当然,对于两个数据集的相关性比较差的数据集,使用迁移学习可能效果不太好。

具体做法是:使用一个成熟的网络结构(比如此处用VGG16)和参数,把它的全连接层全部都去掉,只保留卷积层,这些卷积层可以看成是图片的特征提取器(得到的特征被称为bottleneck features),而全连接层是分类器,对这些图片的特征进行有效分类。对于新项目,我们要分类的类别数目并不是ImageNet的1000类,而是比如此处的2类。故而分类器对我们毫无用处,我们需要创建和训练自己的分类器。如下为VGG16网络的结构:

在这里插入图片描述
其中的Conv block 1-5 都是卷积层和池化层,组成了图片的特征提取器,而后面的Flatten和Dense组成了分类器。

此处我们将Conv block


http://www.kler.cn/a/103643.html

相关文章:

  • Linux 内核定时器(高级字符设备五)
  • 【STM32】标准库的引入
  • 网站、小程序常见布局样式记录
  • ESP32网络开发实例-使用NTP获取当前时间
  • C# 串口通信简单示例
  • Linux友人帐之日志与备份
  • 《动手学深度学习 Pytorch版》 10.2 注意力汇聚:Nadaraya-Watson 核回归
  • python集合
  • CentOS 系统安装和使用Docker服务
  • 【单元测试】--维护和改进单元测试
  • GIS 数据结构BSP树
  • 如何在 Bash 脚本中添加注释
  • 新成果展示:AlGaN/GaN基紫外光电晶体管的设计与制备
  • SylixOS BSP开发(八)
  • uniapp: 本应用使用HBuilderX x.x.xx 或对应的cli版本编译,而手机端SDK版本是 x.x.xx。不匹配的版本可能造成应用异常。
  • 模拟 Junit 框架
  • Jackson 反序列化失败,出现JSON: Unrecognized field
  • C语言之排序
  • 苹果将于8月31日举行今秋的第二场发布会
  • C语言进阶第九课 --------动态内存管理