使用别人的开源成果

想要用现成的网络,最好在网络上找到开源的实现,这要比从头开始实现快得多。

比如:直接在Google上搜索resnets github,找到合适的后点击下载会得到URL,然后在cmd中输入git clone YOURURL,就能下载到本地硬盘。

迁移学习

如果要做一个计算机视觉应用,相比于随机初始化权重后从头训练权重,下载别人已经训练好的网络结构的权重,通常能进行得更快。用这个作为预训练,然后转换到感兴趣的任务上。

对于一些开源的数据集(ImageNet、MS COCO、Pascal),许多人已经训练过它们的算法(可能花费了几周时间和很多的GPU),经过了非常痛苦的找最优的过程,这就意味着你可以下载别人花了几周甚至几月做出来的开源的权重参数,把它当作一个很好的初始化,用在自己的神经网络上。

简而言之,就是用迁移学习把公共的数据集的知识迁移到自己的问题上。

下面是一个迁移学习的例子:
你要对自己两只不同品种的宠物猫分类,为一个三分类问题(1 or 2 or neither)。
由于自己的宠物猫并没有非常多的图片,所以训练集会非常小。

最好的方法是从网上下载一些神经网络开源的实现,同时下载代码和参数。比如ImageNet,有1000个分类,因此网络最后一层有一个Softmax单元。

我们可以删掉它的Softmax单元,创建自己的Softmax单元。

建议我们冻结(freeze)前面层的参数,只训练新的Softmax层有关的参数。
通过使用其他人预训练的权重,你很可能得到很好的性能,即使只有一个很小的数据集。

幸运的是,大多数深度学习框架都支持这种操作。

另一个技巧是(也许对一些情况有用):
由于前面的层都冻结了,相当于一个固定的函数,不需要改变。
我们要做的就是,取输入图像x,然后把它映射到最后一个固定层的激活函数(图中紫色线所示),(我的理解是将整个冻结的网络层视为一个函数,有对应的input和output)。
所以这个能加速训练的技巧就是把冻结网络层的输出结果提前运算(pre-compute),然后储存到硬盘disk里。

详细来说:

  • 预先计算被冻结网络的最后一层(整个被冻结网络,这是一个固定的函数fixed function)的输出(特征或者叫激活值)
  • 然后把它们储存到硬盘里。
  • 用这个特征的向量作为输入,训练Softmax分类器,来做预测。

这样做的优点就是我们不再需要每次遍历训练集,再重新计算这个固定网络的激活值了。

因此如果你的任务只有一个很小的数据集,你可以这样做。

而我们面对一个更大的标定(labeled)的数据集,这种情况下,我们应该冻结更少的层,然后训练后面的层。

对于后面需要训练的层,可以沿用网络结构,只训练参数;也可以用自己的网络结构来代替。

一个经验是:如果有越多的数据,需要冻结的层数越少,能够训练的层数就越多。

这个理念就是:如果你有一个更大的数据集,也许有足够多的数据,那么不要单单训练一个Softmax单元,而是考虑训练中等大小的网络(后面的层)。
最后,极端情况下,如果你有大量数据,你应该做的就是用开源的网络和它的权重,把整个的当作初始化,然后训练整个网络(当然要改Softmax单元)。

吴恩达老师:在所有不同的学科中,在所有深度学习不同的应用中,我认为计算机视觉一个你经常用到迁移学习的领域。除非你有非常非常极其大的数据集和非常大的计算量预算,来从头训练你的网络。

数据增强data augmentation

大部分计算机视觉任务会使用很多的数据,所以数据增强是经常使用的一种技巧,来提高计算机视觉系统的表现。

在当下,计算机视觉的主要问题是没有办法得到充足的数据。

这也就意味着,当训练计算机视觉模型的时候,数据增强data augmentation通常会有所帮助。

垂直镜像对称

或许最简单的数据增强方法就是垂直镜像对称。

随机裁剪


随即裁剪并不是一个完美的数据增强方法,但在实践中这个方法还是很实用的。随机裁剪构成了很大一部分的真实图片。

其他的数据增强方法

  • 旋转
  • shearing
  • 局部弯曲

这3个方法尽管可行,但由于太复杂导致在实际中用的很少。

色彩转换 Color shifting

为通道加上不同的失真值。

这么做的理由是,光线的不同确实可以改变图片的基底色,但标签y还是保持不变的。

色彩转换的好处是:可以使学习算法对照片的颜色变化更鲁棒

训练时实现图片扭曲


这个地方涉及CPU线程的问题,没有听太懂。
但是主要意思是,可以让图片扭曲和训练同时进行。

吴恩达神经网络和深度学习-学习笔记-38-使用开源的方案+迁移学习+数据增强data augmentation相关推荐

  1. 吴恩达神经网络与深度学习——深度神经网络

    吴恩达神经网络与深度学习--深度神经网络 深度神经网络 符号 前向传播 矩阵维度 m个样本 为什么使用深层表示 搭建深层神经网络块 正向传播和反向传播 前向和反向传播 前向传播 反向传播 参数和超参数 ...

  2. 吴恩达神经网络和深度学习

    [前言] 在学习了深度学习和神经网络之后,为什么我要以博客的形式来做笔记?这CSDN有那么多的优秀文章,我自己写的都比不上 别人的我写的真的有意义吗,为什么我要浪费大量的时间去做这项工作?我相信一句话 ...

  3. 吴恩达神经网络与深度学习——浅层神经网络

    吴恩达神经网络与深度学习--浅层神经网络 神经网络概述 神经网络表示 计算神经网络的输出 m个样本的向量化 for loop 向量化 向量化实现的解释 激活函数 sigmoid tanh函数 ReLu ...

  4. 吴恩达神经网络和深度学习-学习笔记-28-端到端的深度学习(end-to-end deep learning )

    深度学习最令人振奋的最新动态之一,就是端到端深度学习end-to-end deep learning的兴起. 什么是"端到端深度学习" 以前有一些数据处理系统或学习系统,它们需要多 ...

  5. 吴恩达神经网络和深度学习-学习笔记-8-梯度消失与爆炸 + 梯度检测

    梯度消失与爆炸 介绍 直观理解是: 权重W只比1(即单位矩阵)大一点,深度神经网络的激活函数将爆炸式增长. 权重W只比1(即单位矩阵)小一点,深度神经网络的激活函数将指数式递减. 虽然我(吴恩达老师) ...

  6. 吴恩达-神经网络和深度学习课程-学习心得(一)

    前言: 陆陆续续学完了吴恩达老师在网易云课堂上开设的深度学习工程师微专业的部分内容(01.神经网络与深度学习,04.卷积神经网络,02.改善深层神经网络),在进一步应用实践之前,对之前的学习的内容做个 ...

  7. 吴恩达神经网络和深度学习-学习笔记-39-计算机视觉现状

    Data vs hand-engineering 你可以把大部分的机器学习问题看成是在你的数据相对较少的地方,应用到你拥有大量数据的地方. 我们今天有相当数量的语音识别数据,至少相对于这个问题的复杂性 ...

  8. 吴恩达神经网络和深度学习-学习笔记-22-误差分析

    单一误差分析 假设我们面对一个猫分类器的准确率不够的原因. 队友看了一下算法分类出错的例子,注意到算法将一些够狗分类为猫. 在这种条件下,我们应不应该做一个项目专门处理狗?比如搜集更多的狗的图片,或者 ...

  9. 吴恩达神经网络和深度学习-学习笔记-21-何时该改变开发集+测试集或指标

    需要我们改变开发集+测试集或指标的情况,是现有的指标或开发测试集并不能帮助我们选择出最好的模型! 如果你的评估指标,无法正确评估好算法的排名,那么就需要花时间定义一个新的评估指标. (加权来排除某一类 ...

最新文章

  1. EXCEL打开CSV文件乱码的解决方法
  2. linux 查看语言环境_Linux语言环境版本查看shell脚本
  3. git merge --squash改写提交
  4. parcelable 缺点_成都金牛区茶道炭优缺点-兴木华木炭
  5. 【MM】新建移动类型(Movement Type)
  6. java json设置编码,如何设置数组以产生这种json编码格式
  7. dart系列之:创建Library package
  8. es 同义词 热更新 1.1版本
  9. WGZX:javaScript 学习心得--1
  10. Java Web学习笔记12:CKEditor在线编辑器
  11. struts2学习——拦截器
  12. 更改appstore开发商名字
  13. ecshop如何增加多个产品详细描述的编辑器
  14. Gallery3d 学习笔记(14)
  15. 资料分析——基础知识
  16. 数据科学,会如何向我们撒谎?
  17. Python读取excel文件数据并画柱状图
  18. CSS如何设置div半透明效果
  19. Edge浏览器配置教程
  20. 重读Ardupilot中stabilize model+MAVLINK解包过程

热门文章

  1. python有哪些用途-Python语言有哪些用途
  2. 微信AI开放接口介绍
  3. vue的介绍及基本使用(详细,好理解,示例代码)
  4. Vue实现按钮和文本框的切换
  5. LeetCode 38外观数列
  6. vspy如何在图形面板显示报文_盘点市售三款USBC 86型面板插座,支持iPhone 12快充...
  7. php中的class的用法,PHP get_class_vars() 函数用法及示例
  8. deeplin显示安装空间不够_电视内存不够怎么办?一步到位来搞定
  9. jQuery 学习-DOM篇(二):jQuery 在 DOM 内部插入元素
  10. Kubernetes 搭建 ES 集群(存储使用 cephfs)