想要将深度学习应用于小型图像数据集,使用预训练网络就是一种常用且高效的方法。

预训练网络就是一个保存好的网络,之前已在大型数据集上训练(通常是大规模图像分类任务)。

如果训练的原始数据集足够大且足够通用(如imagenet数据集),那么预训练网络学到的特征的空间层次结构可以有效的作为视觉世界的通用模型,因此这些特征可用于不同的计算机视觉问题。

这种学习到的特征在不同问题之间的可移植性,也是深度学习与其他浅层方法相比的重要优势。

使用预训练网络有两种方法,特征提取和微调模型。

特征提取是使用之前网络学到的表示来从新样本中提取有趣的特征。

如前所述,用于图像分类的卷积神经网络包含两部分:首先是一系列池化层和卷积层,然后是一个密集连接分类器。第一部分叫做模型的卷积基。特征提取就是取出之前训练好网络的卷积基,在上面运行新数据,得到输出的高级特征。

注意,某个卷积层提取的表示的通用性(以及可复用性)取决于该层在模型中的深度。模型中越靠近底部的层提取的是局部的高度通用的特征图(比如视觉边缘、颜色和纹理),而越靠近顶部的层提取的是更加抽象的概念(比如“猫耳朵”或“狗眼睛”)。因此,如果你的新数据集与原始数据集有很大差异,那么最好直选用模型的前几层来做特征提取,而不是使用整个卷积基。

利用特征提取来进行新的任务,有两种方法可供选择:

一、在新的数据集上运行卷积基,将得到的输出保存为numpy数组,然后用这个数据作为输入,输入到独立的密集连接层中,这种方法速度快,计算代价低。但不允许使用数据增强。

二、在顶部添加Dence层来扩展已有模型(训练时冻结卷积基),并在输入数据上进行端对端地运行整个模型。这种方法可以使用数据增强,但计算代价比第一种方法高很多。(虽然训练时卷积基的参数固定,但Dence层的参数优化时依旧需要往前传播,由于卷积基比较深,所以计算量会大很多;而第一种方法Dence层参数优化时不需要经过卷积基)

微调模型是用于特征提取的冻结的卷积基,将其顶部的几层“解冻”,并将这几层和新增加的Dence层一起联合训练。

之所以叫微调,是因为它只是略微调整了所复用模型中更加抽象的表示,以便让这些表示与新的任务更加相关。

微调模型的步骤如下:

1)在已经训练好的基网络上添加自定义网络;

2)冻结基网络;

3)训练所添加的部分;

4)解冻基网络的一些层;

5)联合训练解冻的这些层和添加的部分。

微调层数需要考虑以下两点:

1.卷积基中靠近底部的层编码是更加通用的可复用特征,而靠近顶部的层编码是更加专业化的特征。微调这些更专业化的特征更加有用。微调越靠近底部的层,得到的回报越少。

2.训练的参数越多,过拟合的风险越大。

一个好策略是仅微调卷积基的最后两三层。

使用预训练的卷积神经网络相关推荐

  1. Python深度学习(使用预训练的卷积神经网络)--学习笔记(十一)

    5.3 使用预训练的卷积神经网络 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已经在大型数据 ...

  2. 从零开始学keras之使用预训练的卷积神经网络

    想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络. 预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训 ...

  3. 人工智能--预训练的卷积神经网络

    学习目标: 掌握使用预训练好的ResNet对自己的数据再次进行训练的方法. 掌握函数式建立Keras模型的方法. 学习内容: 利用ImageDataGenerator类直接从硬盘中读取猫和狗(cat- ...

  4. 深度学习--使用预训练的卷积神经网络

    文章目录 前言 一.使用预训练网络 二.将VGG16卷积基实例化 三.使用卷积基进行特征提取 1.不使用数据增强的快速特征提取 2.使用数据增强的特征提取 四.微调模型 前言 想要将深度学习应用于小型 ...

  5. 使用预训练的卷积神经网络(猫狗图片分类)

    本次所用数据来自ImageNet,使用预训练好的数据来预测一个新的数据集:猫狗图片分类.这里,使用VGG模型,这个模型内置在Keras中,直接导入就可以了. from keras.applicatio ...

  6. 【深度学习】预训练的卷积模型比Transformer更好?

    引言 这篇文章就是当下很火的用预训练CNN刷爆Transformer的文章,LeCun对这篇文章做出了很有深意的评论:"Hmmm".本文在预训练微调范式下对基于卷积的Seq2Seq ...

  7. 卷积神经网络的训练过程,卷积神经网络如何训练

    深度神经网络是如何训练的? Coursera的Ng机器学习,UFLDL都看过.没记错的话Ng的机器学习里是直接给出公式了,虽然你可能知道如何求解,但是即使不知道完成作业也不是问题,只要照着公式写就行. ...

  8. TensorFlow2使用预训练的卷积网络(ConvNet)进行迁移学习

    本案例使用预训练的模型对猫狗数据集进行分类任务.使用预训练的模型有两种方式: 一是利用特征提取器.利用预训练模型的前几层对新数据进行特征提取,最后加入分类的层即可完成新模型的创建. 二是Fine Tu ...

  9. 卷积神经网络的训练算法,卷积神经网络算法实现

    卷积神经网络算法是什么? 一维构筑.二维构筑.全卷积构筑. 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feed ...

最新文章

  1. 【mysql错误】用as别名 做where条件,报未知的列 1054 - Unknown column 'name111' in 'field list'...
  2. 计算机义务维修队,我院捷诚义务维修服务队电脑维修服务活动
  3. 服务器网站数据用什么方式加以保留?
  4. 用INFORMATION_SCHEMA逻辑MySQL的索引
  5. 成功解决Error: Cannot find module 'web3'
  6. linux运维、架构之路-jumpserver
  7. Linux scp 使用详解
  8. C++ new 解析重载
  9. 微信支付开通流程,及微信支付商户号申请详细流程介绍
  10. 微信公众号文章采集的几种方案
  11. 微信发红包测试点整理
  12. idea调试代码错误_通过调试进行指导:如何将代码错误转化为学习经验
  13. 2017河南工业大学玲珑杯赛后总结
  14. no such file or directory, open
  15. 智云通CRM:如何与客户建立信任关系?
  16. 人才补贴,正式取消?
  17. Linux JKD1.8 安装及配置
  18. 发现几个有趣的公众号!
  19. Python 十六进制,十进制转换
  20. 面对家里沉迷手机的学生,家长着急怎么办?

热门文章

  1. java arraylist优点_java – 创建初始容量为0的ArrayList的优点?
  2. 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
  3. 如何构建一个有效的服务治理平台
  4. kuayu react_多种解决react中跨域问题方案
  5. 后端开发应彻底掌握的13 种锁的实现方式
  6. SNS网站建设策划书
  7. pandas判断缺失值的办法
  8. Linux的阻塞和非阻塞IO
  9. 计算机真人发音的怎么变成音乐的,如何实现人工语音合成?一个软件就能搞定...
  10. 轻便容量大的充电宝推荐,额定容量大的充电宝盘点