提交 d8210cbc 编写于 作者: 小乙SAMA's avatar 小乙SAMA

dl1 lesson1 校对完成

上级 8150b192
......@@ -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.
先完成此消息的编辑!
想要评论请 注册