Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
fastai-ml-dl-notes-zh
提交
d8210cbc
F
fastai-ml-dl-notes-zh
项目概览
OpenDocCN
/
fastai-ml-dl-notes-zh
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fastai-ml-dl-notes-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d8210cbc
编写于
10月 17, 2018
作者:
小乙SAMA
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dl1 lesson1 校对完成
上级
8150b192
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
24 deletion
+26
-24
zh/dl1.md
zh/dl1.md
+26
-24
未找到文件。
zh/dl1.md
浏览文件 @
d8210cbc
...
...
@@ -4,8 +4,8 @@
#### 入门[ [0:00](https://youtu.be/IPBSB1HLNLo) ]:
*
为了训练神经网络,你肯定需要图形处理单元(GPU) - 特别是NVIDIA GPU,因为它是唯一支持CUDA(几乎所有深度学习
图书馆和从业者都使用的语言和框架)的人
。
*
租用GPU有几种方法:Crestle
[
04:06],Paperspace [ [06:10
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D6m10s
)
]
*
为了训练神经网络,你肯定需要图形处理单元(GPU) - 特别是NVIDIA GPU,因为它是唯一支持CUDA(几乎所有深度学习
库和从业者都使用的语言和框架)的设备
。
*
租用GPU有几种方法:Crestle
[
[04:06
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D4m06s
)
] ,Paperspace
[
[06:10
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D6m10s
)
]
#### [Jupyter笔记本和狗与猫的介绍](https://github.com/fastai/fastai/blob/master/courses/dl1/lesson1.ipynb) [ [12:39](https://youtu.be/IPBSB1HLNLo%3Ft%3D12m39s) ]
...
...
@@ -104,8 +104,8 @@ array([[[ 29, 20, 23], [ 31, 22, 25], [ 34, 25, 28], [ 37, 28, 31]],
[[
104
,
95
,
98
],
[
103
,
94
,
97
],
[
102
,
93
,
96
],
[
102
,
93
,
96
]]],
dtype
=
uint8
)
```
*
`img`
是一个三维数组(又名3
级张量
)
*
这三个
项目
(例如
`[29, 20, 23]`
)表示0到255之间的红绿蓝像素值
*
`img`
是一个三维数组(又名3
维tensor
)
*
这三个
维度
(例如
`[29, 20, 23]`
)表示0到255之间的红绿蓝像素值
*
我们的想法是利用这些数字并用它们来预测这些数字是代表猫还是狗,这是基于查看猫和狗的大量图片。
*
这个数据集来自
[
Kaggle竞赛
](
https://www.kaggle.com/c/dogs-vs-cats
)
,当它发布时(早在2013年),最先进的技术准确率为80%。
...
...
@@ -123,20 +123,20 @@ learn.fit (0.01, 3)
[
0.
0.04955
0.02605
0.98975
]
[
1.
0.03977
0.02916
0.99219
]
[
2.
0.03372
0.02929
0.98975
]
```
*
这将做3个
**
时期
**
,这意味着它将三次查看整个图像集。
*
这将做3个
**
epoch
**
,这意味着它将三次查看整个图像集。
*
输出中的三个数字中的最后一个是验证集上的准确度。
*
前两个是训练集和验证集的损失函数值(在这种情况下是交叉熵损失)。
*
开始(例如,
`1.`
)是
纪元号
。
*
开始(例如,
`1.`
)是
epoch数
。
*
我们通过3行代码在17秒内达到了~99%(这将在2013年赢得Kaggle比赛)!
[
[21:49
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D21m49s
)
]
*
很多人都认为深度学习需要大量的时间,大量的资源和大量的数据 - 一般来说,这不是真的!
#### Fast.ai
图书馆
[ [22:24](https://youtu.be/IPBSB1HLNLo%3Ft%3D22m24s) ]
#### Fast.ai
库
[ [22:24](https://youtu.be/IPBSB1HLNLo%3Ft%3D22m24s) ]
*
该库采用了他们可以找到的所有最佳实践和方法 - 每次出现看起来很有趣的论文时,他们会对其进行测试,如果它适用于各种数据集,并且他们可以弄清楚如何调整它,它会得到它在库中实现它。
*
Fast.ai
策划所有这些最佳实践并为您
打包,并且大部分时间都会找出自动处理事物的最佳方法。
*
Fast.ai位于名为PyTorch的库之上,这是一个
非常灵活的深度学习,机器学习和由Facebook编写的
GPU计算库。
*
Fast.ai
所有这些策略的最佳实践
打包,并且大部分时间都会找出自动处理事物的最佳方法。
*
Fast.ai位于名为PyTorch的库之上,这是一个
由Facebook编写的非常灵活的深度学习,机器学习
GPU计算库。
*
大多数人比PyTorch更熟悉TensorFlow,但Jeremy现在知道的大多数顶级研究人员已经转向PyTorch。
*
Fast.ai非常灵活,您可以根据需要尽可能多地使用所有这些策
划的最佳实践。 在任何时候都很容易挂钩并编写自己的数据增强,丢失功能
,网络架构等,我们将在本课程中学习所有内容。
*
Fast.ai非常灵活,您可以根据需要尽可能多地使用所有这些策
略的最佳实践。 在任何时候都很容易使用并编写自己的数据增强,损失函数
,网络架构等,我们将在本课程中学习所有内容。
#### 分析结果[ [24:21](https://youtu.be/IPBSB1HLNLo%3Ft%3D24m12s) ]
...
...
@@ -163,7 +163,7 @@ data.classes
*
`data`
包含验证和训练数据
*
`learn`
包含模型
让我们对验证集进行预测(预测
是以对数比例
):
让我们对验证集进行预测(预测
结果使用对数缩放
):
```
py
log_preds
=
learn
.
predict
()
...
...
@@ -244,22 +244,23 @@ plot_val_with_title(most_uncertain, "Most uncertain predictions")
![](
../img/1_wZDDn_XFH-z7libyMUlsBg.png
)
*
为什么看这些图像很重要? Jeremy在构建模型后所做的第一件事就是找到一种可视化其
构建方式的方法。 因为如果他想让模型变得更好,那么他需要利用做得好的事情来解决那些做得很糟糕的事情
。
*
为什么看这些图像很重要? Jeremy在构建模型后所做的第一件事就是找到一种可视化其
模型的方法。 因为如果他想让模型变得更好,那么他需要保持做得好的分类,降低那些做得很糟糕的分类
。
*
在这种情况下,我们已经了解了有关数据集本身的一些信息,即这里有一些可能不应该存在的图像。 但同样清楚的是,这种模式还有改进的余地(例如数据增强 - 我们将在后面介绍)。
*
现在您已准备好构建自己的图像分类器(对于常规照片 -
可能不是
CT扫描)! 例如,
[
这
](
https://towardsdatascience.com/fun-with-small-image-data-sets-8c83d95d0159
)
是其中一个学生所做的。
*
现在您已准备好构建自己的图像分类器(对于常规照片 -
除了
CT扫描)! 例如,
[
这
](
https://towardsdatascience.com/fun-with-small-image-data-sets-8c83d95d0159
)
是其中一个学生所做的。
*
查看
[
此论坛帖子
](
http://forums.fast.ai/t/understanding-softmax-probabilities-output-on-a-multi-class-classification-problem/8194
)
,了解可视化结果的不同方式(例如,当有超过2个类别时等)
#### 自上而下与自下而上[ [30:52](https://youtu.be/IPBSB1HLNLo%3Ft%3D30m52s) ]
自下而上:了解您需要的每个构建块,并最终将它们组合在一起
*
很难保持动力
*
很难知道“大局”
*
很难知道你真正需要
哪些作品
*
很难知道你真正需要
的模块
fast.ai:让学生立即使用神经网络,尽快获得结果
*
逐
渐剥离层,修改,看看引擎盖下
*
逐
层拨开,修改,最终看到核心
#### 课程结构[ [33:53](https://youtu.be/IPBSB1HLNLo%3Ft%3D33m53s) ]
...
...
@@ -277,14 +278,14 @@ fast.ai:让学生立即使用神经网络,尽快获得结果
图像分类算法对很多东西很有用。
*
例如,AlphaGo
[
[42:20
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D42m20s
)
]看了成千上万的棋盘,每个
人都有一个标签,说明棋盘是否最终成为赢球或输球球员
。 因此,它学会了一种图像分类,能够看到一块棋盘,并弄清楚它是好还是坏 - 这是玩得好的最重要的一步:知道哪个动作更好。
*
例如,AlphaGo
[
[42:20
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D42m20s
)
]看了成千上万的棋盘,每个
都有一个标签,说明棋盘是否最终成为赢家
。 因此,它学会了一种图像分类,能够看到一块棋盘,并弄清楚它是好还是坏 - 这是玩得好的最重要的一步:知道哪个动作更好。
*
另一个例子是早期的学生创建
[
了鼠标移动图像
](
https://www.splunk.com/blog/2017/04/18/deep-learning-with-splunk-and-tensorflow-for-security-catching-the-fraudster-in-neural-networks-with-behavioral-biometrics.html
)
和检测到的欺诈性交易
[
的图像分类器
](
https://www.splunk.com/blog/2017/04/18/deep-learning-with-splunk-and-tensorflow-for-security-catching-the-fraudster-in-neural-networks-with-behavioral-biometrics.html
)
。
#### 深度学习≠机器学习[ [44:26](https://youtu.be/IPBSB1HLNLo%3Ft%3D44m26s) ]
*
深度学习是一种机器学习
*
机器学习是由Arthur Samuel发明的。 在50年代后期,他通过发明机器学习,
得到了
一台IBM大型机,可以更好地玩跳棋。 他让大型机多次与自己对抗并弄清楚哪种东西能够取得胜利,并在某种程度上用它来编写自己的程序。 1962年,亚瑟·塞缪尔说,有一天,绝大多数计算机软件将使用这种机器学习方法而不是手工编写。
*
C-Path(计算病理学家)
[
[45:42
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D45m42s
)
]是传统机器学习方法的一个例子。 他拍摄了乳腺癌活组织检查的病理学幻灯片,咨询了许多病理学家关于哪些类型的模式或特征可能与长期生存相关的想法。 然后他们编写专家算法来计算这些特征,通过逻辑回归进行运算,并预测存活率。 它的表现优于病理学家,但是
领域专家和计算机专家需要
多年的工作才能建立起来。
*
机器学习是由Arthur Samuel发明的。 在50年代后期,他通过发明机器学习,
使用
一台IBM大型机,可以更好地玩跳棋。 他让大型机多次与自己对抗并弄清楚哪种东西能够取得胜利,并在某种程度上用它来编写自己的程序。 1962年,亚瑟·塞缪尔说,有一天,绝大多数计算机软件将使用这种机器学习方法而不是手工编写。
*
C-Path(计算病理学家)
[
[45:42
](
https://youtu.be/IPBSB1HLNLo%3Ft%3D45m42s
)
]是传统机器学习方法的一个例子。 他拍摄了乳腺癌活组织检查的病理学幻灯片,咨询了许多病理学家关于哪些类型的模式或特征可能与长期生存相关的想法。 然后他们编写专家算法来计算这些特征,通过逻辑回归进行运算,并预测存活率。 它的表现优于病理学家,但是
需要花费领域专家和计算机专家
多年的工作才能建立起来。
#### 更好的方式[ [47:35](https://youtu.be/IPBSB1HLNLo%3Ft%3D47m35s) ]
...
...
@@ -363,13 +364,13 @@ Sigmoid和ReLU
![](
../img/1_YQWdnHVTRPGjr0-VGuSxyA.jpeg
)
*
如果学习率太大,它将发散而不是收敛
*
如果学习率太小,则
需要永远
*
如果学习率太小,则
收敛过慢
#### 可视化和理解卷积网络[ [01:08:27](https://youtu.be/IPBSB1HLNLo%3Ft%3D1h8m27s) ]
![](
../img/1_RPakI9UqMTYmGIm4ELhh6w.png
)
我们从一些非常简单的东西开始,但如果
我们使用它作为一个
足够大的规模,由于通用近似定理和在深度学习中使用多个隐藏层,我们实际上获得了非常丰富的功能。 这实际上是我们在训练我们的狗与猫识别器时使用的。
我们从一些非常简单的东西开始,但如果
有
足够大的规模,由于通用近似定理和在深度学习中使用多个隐藏层,我们实际上获得了非常丰富的功能。 这实际上是我们在训练我们的狗与猫识别器时使用的。
#### Dog vs. Cat Revisited - 选择学习率[ [01:11:41](https://youtu.be/IPBSB1HLNLo%3Ft%3D1h11m41s) ]
...
...
@@ -378,11 +379,12 @@ learn.fit(0.01, 3)
```
*
第一个数字
`0.01`
是学习率。
*
_学习率_决定了您想要更新_权重_ (或_参数_ )的速度或速度
。 学习率是设置最困难的参数之一,因为它会显着影响模型性能。
*
**学习率**
决定了您想要更新
**权重**
(或
**参数**
)的快或慢
。 学习率是设置最困难的参数之一,因为它会显着影响模型性能。
*
方法
`learn.lr_find()`
可帮助您找到最佳学习率。 它使用2015年论文“
[
循环学习率训练神经网络”中
](
http://arxiv.org/abs/1506.01186
)
开发的技术,我们只需将学习率从非常小的值提高,直到损失停止下降。 我们可以绘制不同批次的学习率,看看它是什么样的。
```
py
learn
=
ConvLearner
.
pretrained
(
arch
,
data
,
precompute
=
True
)
learn
.
lr_find
()
learn
=
ConvLearner
.
pretrained
(
arch
,
data
,
precompute
=
True
)
learn
.
lr_find
()
```
我们的
`learn`
对象包含一个属性
`sched`
,其中包含我们的学习率调度程序,并具有一些方便的绘图功能,包括以下内容:
...
...
@@ -403,7 +405,7 @@ learn.sched.plot()
![](
../img/1_CWF7v1ihFka2QG4RebgqjQ.png
)
*
然后我们选择
学习率,其中损失仍在明显改善
- 在这种情况下
`1e-2`
(0.01)
*
然后我们选择
其中损失仍在明显改善的学习率,
- 在这种情况下
`1e-2`
(0.01)
#### 选择时代数量[ [1:18:49](https://youtu.be/IPBSB1HLNLo%3Ft%3D1h18m49s) ]
...
...
@@ -444,6 +446,6 @@ learn.sched.plot()
![](
../img/1_z0rM6FP5gJZExHbmsVr5Xg.png
)
**7.**
停止Paperspace,Crestle,AWS - 否则你将
被收取$$
**7.**
停止Paperspace,Crestle,AWS - 否则你将
收巨额账单
**8.**
请记住
[
论坛
](
http://forums.fast.ai/
)
和
[
http://course.fast.ai/
](
http://course.fast.ai/
)
(每节课)以获取最新信息。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录