提交 1059527b 编写于 作者: W wizardforcel

2020-09-02 18:17:17

上级 62f5ead4
......@@ -117,11 +117,11 @@ L1 惩罚权重的绝对值,并趋于使权重为零。 L2 惩罚权重的平
SGD 与梯度下降相同,区别在于 SGD 每次仅用于部分数据训练。 该参数称为小批量大小。 从理论上讲,甚至可以使用一个示例进行训练。 在实践中,最好尝试各种数字。 在下一部分中,我们将讨论比标准 ANN 在图像数据上更有效的卷积神经网络。
访问 [https://yihui.name/animation/example/grad-desc/](https://yihui.name/animation/example/grad-desc/) ,可以很好地看到凸面和非凸面的梯度下降情况。
访问[这里](https://yihui.name/animation/example/grad-desc/),可以很好地看到凸面和非凸面的梯度下降情况。
# 在 TensorFlow 游乐场玩
TensorFlow 游乐场是神经网络的交互式可视化。 访问 [http://playground.tensorflow.org/](http://playground.tensorflow.org/) ,方法是通过更改参数来查看前面提到的术语如何协同工作。 这是操场的屏幕截图:
TensorFlow 游乐场是神经网络的交互式可视化。 访问[这里](http://playground.tensorflow.org/),方法是通过更改参数来查看前面提到的术语如何协同工作。 这是操场的屏幕截图:
![](img/2a57f080-1ddb-4c9d-b3d0-201bc792caad.png)
......@@ -155,7 +155,7 @@ TensorFlow 游乐场中的仪表板
CNN 是任何计算机视觉深度学习模型中最重要的组成部分。 毫不夸张地说,没有 CNN,任何计算机都不可能拥有视觉。 在下一部分中,我们将讨论几个可用于一些应用程序的高级层。
访问 [https://www.youtube.com/watch?v=jajksuQW4mc](https://www.youtube.com/watch?v=jajksuQW4mc) ,以获取有关 CNN 和最大池操作的出色可视化。
访问[这里](https://www.youtube.com/watch?v=jajksuQW4mc),以获取有关 CNN 和最大池操作的出色可视化。
# 递归神经网络(RNN)
......@@ -249,7 +249,7 @@ GP-GPU 是一种特殊的硬件,可加快训练深度学习模型的训练过
# 计算机统一设备架构-CUDA
CUDA 是 NVIDIA 使用 GPU 的并行特性提供的 API 层。 安装此驱动程序后,还将安装硬件驱动程序。 首先,从 NVIDIA 门户网站下载`CUDA`库: [https://developer.nvidia.com/cuda-downloads](https://developer.nvidia.com/cuda-downloads)
CUDA 是 NVIDIA 使用 GPU 的并行特性提供的 API 层。 安装此驱动程序后,还将安装硬件驱动程序。 首先,[从 NVIDIA 门户网站下载`CUDA`库](https://developer.nvidia.com/cuda-downloads)
按照页面上的说明进行操作,下载驱动程序,然后按照安装说明进行操作。 这是 Ubuntu CUDA 的屏幕截图和安装说明:
......@@ -261,7 +261,7 @@ CUDA 是 NVIDIA 使用 GPU 的并行特性提供的 API 层。 安装此驱动
# CUDA 深度神经网络-CUDNN
`CUDNN`库为深度学习算法提供了原语。 由于此软件包由 NVIDIA 提供,因此对其硬件进行了高度优化,并且运行速度更快。 该软件包提供了几种用于深度学习的标准例程。 著名的深度学习库(例如`tensorflow``caffe`等)使用这些软件包。 在下一节中,将提供安装`CUDNN`的说明。 您可以从 NVIDIA 门户网站 [https://developer.nvidia.com/rdp/cudnn-download](https://developer.nvidia.com/rdp/cudnn-download) 下载`CUDNN`
`CUDNN`库为深度学习算法提供了原语。 由于此软件包由 NVIDIA 提供,因此对其硬件进行了高度优化,并且运行速度更快。 该软件包提供了几种用于深度学习的标准例程。 著名的深度学习库(例如`tensorflow``caffe`等)使用这些软件包。 在下一节中,将提供安装`CUDNN`的说明。 您可以从 [NVIDIA 门户网站](https://developer.nvidia.com/rdp/cudnn-download)下载`CUDNN`
用户帐户是必需的(免费注册)。
......@@ -284,7 +284,7 @@ Python 是任何数据科学应用程序的实际选择。 它拥有最大的社
* Python 3.x 避免了原始实现中的许多设计缺陷
* 与普遍的看法相反,Python3.x 具有与 Python 2.x 一样多的数据科学支持库。
在本书中,我们将使用 Python 版本 3。 转到 [https://www.python.org/downloads/](https://www.python.org/downloads/) ,然后根据操作系统下载版本 3。 按照下载链接中给出的步骤安装 Python。 安装 Python 后,必须安装 **pip3** ,以方便安装 Python 软件包。 然后通过输入以下命令安装几个 Python 软件包,以便以后可以安装`OpenCV``tensorflow`
在本书中,我们将使用 Python 版本 3。 转到[这里](https://www.python.org/downloads/),然后根据操作系统下载版本 3。 按照下载链接中给出的步骤安装 Python。 安装 Python 后,必须安装 **pip3** ,以方便安装 Python 软件包。 然后通过输入以下命令安装几个 Python 软件包,以便以后可以安装`OpenCV``tensorflow`
```py
sudo pip3 install numpy scipy scikit-learn pillow h5py
......@@ -306,7 +306,7 @@ Python 是任何数据科学应用程序的实际选择。 它拥有最大的社
sudo apt-get install python-opencv
```
对于其他操作系统,可以在 [https://opencv.org/](https://opencv.org/) 找到类似的步骤。 它是跨平台的,针对 CPU 密集型应用程序进行了优化。 它具有多种编程语言的接口,并且受 Windows,Ubuntu 和 Mac 支持。
对于其他操作系统,可以在[这里](https://opencv.org/)找到类似的步骤。 它是跨平台的,针对 CPU 密集型应用程序进行了优化。 它具有多种编程语言的接口,并且受 Windows,Ubuntu 和 Mac 支持。
# TensorFlow 库
......@@ -372,7 +372,7 @@ Hello, TensorFlow!
让我们再看一个示例,以了解会话和图形的工作方式。
访问 [https://github.com/rajacheers/DeepLearningForComputerVision](https://github.com/rajacheers/DeepLearningForComputerVision) 获取本书中所有示例的代码。 该代码将根据章节进行组织。 您可以提出问题并在存储库中获得帮助。
访问[这里](https://github.com/rajacheers/DeepLearningForComputerVision)获取本书中所有示例的代码。 该代码将根据章节进行组织。 您可以提出问题并在存储库中获得帮助。
# TensorFlow 示例,将两个数字相加
......@@ -478,7 +478,7 @@ TensorFlow Serving 是 TensorFlow 中的工具,专为灵活的部署环境而
sudo apt-get install tensorflow-model-server
```
有关如何使用服务的逐步说明,将在[第 3 章](../Text/03.html)*图像检索*中进行介绍。 请注意,仅在 Ubuntu 中即可轻松安装 Serving; 对于其他操作系统,请参考 [https://www.tensorflow.org/serving/setup](https://www.tensorflow.org/serving/setup) 。 下图说明了 TensorFlow Serving 和 TensorFlow 在生产环境中如何交互:
有关如何使用服务的逐步说明,将在[第 3 章](../Text/03.html)*图像检索*中进行介绍。 请注意,仅在 Ubuntu 中即可轻松安装 Serving; 对于其他操作系统,请参考[这里](https://www.tensorflow.org/serving/setup)。 下图说明了 TensorFlow Serving 和 TensorFlow 在生产环境中如何交互:
![](img/54fe6552-5ba5-4270-ab85-74a753389c05.png)
......
......@@ -78,7 +78,7 @@ optimiser = tf.train.GradientDescentOptimizer(
softmax 和交叉熵是从`tf.nn`程序包一起计算的,该程序包还有其他几种有用的方法。 `tf.train`有几个优化器,在这里,我们使用香草梯度下降。 您可以访问 TensorFlow API 文档以了解其他可选参数。 到目前为止,已定义了占位符,变量和操作,但尚未填充张量。
阅读 TensorFlow 中提供的优化程序列表,网址为 [https://www.tensorflow.org/api_guides/python/train](https://www.tensorflow.org/api_guides/python/train) 。 Adam 优化器对于计算机视觉应用程序特别有用。 它通常会收敛得更快,因此我们不需要定义学习率。 有关优化器的理论总结,请访问 [http://ruder.io/optimizing-gradient-descent](http://ruder.io/optimizing-gradient-descent)
阅读 TensorFlow 中提供的[优化器列表](https://www.tensorflow.org/api_guides/python/train)。 Adam 优化器对于计算机视觉应用程序特别有用。 它通常会收敛得更快,因此我们不需要定义学习率。 有关优化器的理论总结,请访问[这里](http://ruder.io/optimizing-gradient-descent)
# 用数据训练模型
......@@ -458,7 +458,7 @@ Accuracy of test data: 0.9902
![](img/da904c50-2447-4537-833a-d31218cbfe5a.png)
数据集大小,标签数量和图像大小类似于`MNIST`。 可以在 [https://github.com/zalandoresearch/fashion-mnist](https://github.com/zalandoresearch/fashion-mnist) 上找到更多详细信息。 您可以运行先前学习的模型并检查准确性。
数据集大小,标签数量和图像大小类似于`MNIST`。 可以在[这个页面](https://github.com/zalandoresearch/fashion-mnist)上找到更多详细信息。 您可以运行先前学习的模型并检查准确性。
# ImageNet 数据集和竞争
......@@ -476,7 +476,7 @@ ImageNet 是具有 14,197,122 图像,21,841 个同义词集索引的计算机
# AlexNet 模型
**AlexNet** 是第一本引起人们对计算机视觉深度学习的广泛兴趣的出版物。 Krizhevsky 等。 ( [https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf](https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf) )提出了 AlexNet,它一直是先驱和影响力 在这个领域里。 该模型赢得了 ImageNet 2013 挑战。 错误率是 15.4%,明显优于下一个。 该模型是具有五个卷积层的相对简单的体系结构。 面临的挑战是对 1,000 种对象进行分类。 图像和数据包含 1500 万条带注释的图像,其中包含 22,000 多个类别。 其中,只有 1,000 个类别用于比赛。 AlexNet 使用 ReLU 作为激活功能,发现它的训练速度比其他激活功能快几倍。 该模型的架构如下所示:
[**Krizhevsky 等人**](https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)提出了 AlexNet(是第一个引起人们对计算机视觉深度学习的广泛兴趣的作品),它一直是这个领域里的先驱和影响力。 该模型赢得了 ImageNet 2013 挑战。 错误率是 15.4%,明显优于下一个。 该模型是具有五个卷积层的相对简单的体系结构。 面临的挑战是对 1,000 种对象进行分类。 图像和数据包含 1500 万条带注释的图像,其中包含 22,000 多个类别。 其中,只有 1,000 个类别用于比赛。 AlexNet 使用 ReLU 作为激活功能,发现它的训练速度比其他激活功能快几倍。 该模型的架构如下所示:
![](img/ee056ac4-3d0d-47df-ac96-5e2f6988c91b.png)
......@@ -496,7 +496,7 @@ ImageNet 是具有 14,197,122 图像,21,841 个同义词集索引的计算机
# Google Inception-V3 模型
**Inception-V3** 是 Szegedy 等人提出的。 ( [https://arxiv.org/pdf/1409.4842.pdf](https://arxiv.org/pdf/1409.4842.pdf),并介绍了具有更好泛化方法的初始概念。 该架构在 2014 年赢得了 ImageNet 竞赛的冠军。它旨在提高速度和尺寸的效率。 它的参数比 AlexNet 小 12 倍。 初始阶段是构建宏体系结构的微体系结构。 每个隐藏层都有一个较高级别的图像表示。 在每一层,我们可以选择使用池化或其他层。 初始使用多个内核,而不是使用一种类型的内核。 平均池之后是各种大小的卷积,然后将它们合并在一起。
[**Inception-V3** 是 Szegedy 等人提出的](https://arxiv.org/pdf/1409.4842.pdf),并介绍了具有更好泛化方法的初始概念。 该架构在 2014 年赢得了 ImageNet 竞赛的冠军。它旨在提高速度和尺寸的效率。 它的参数比 AlexNet 小 12 倍。 初始阶段是构建宏体系结构的微体系结构。 每个隐藏层都有一个较高级别的图像表示。 在每一层,我们可以选择使用池化或其他层。 初始使用多个内核,而不是使用一种类型的内核。 平均池之后是各种大小的卷积,然后将它们合并在一起。
可以基于数据学习内核参数。 使用多个内核,该模型可以检测较小的特征以及较高的抽象度。 1 x 1 卷积将减少特征,从而减少计算量。 这将在推理过程中占用较少的 RAM。 以下是最简单形式的启动模块,其中包含具有各种内核大小和池化的卷积选项:
......@@ -516,17 +516,17 @@ ImageNet 是具有 14,197,122 图像,21,841 个同义词集索引的计算机
# Microsoft ResNet-50 模型
**ResNet** 是 He 等人提出的。 ( [https://arxiv.org/pdf/1512.03385.pdf](https://arxiv.org/pdf/1512.03385.pdf),并在 2015 年赢得了 ImageNet 竞赛。此方法表明可以训练更深的网络。 网络越深,精度变得越饱和。 这甚至不是由于过拟合或由于存在大量参数,而是由于减少了训练误差。 这是由于无法反向传播梯度。 可以通过以下方法将梯度直接发送到带有残差块的更深层来克服:
[**ResNet** 是 He 等人提出的](https://arxiv.org/pdf/1512.03385.pdf),并在 2015 年赢得了 ImageNet 竞赛。此方法表明可以训练更深的网络。 网络越深,精度变得越饱和。 这甚至不是由于过拟合或由于存在大量参数,而是由于减少了训练误差。 这是由于无法反向传播梯度。 可以通过以下方法将梯度直接发送到带有残差块的更深层来克服:
![](img/ff1c06f1-c254-4602-9b50-91cf9402df05.png)
每两层相连,形成一个残留块。 您可以看到训练是在各层之间传递的。 通过这种技术,反向传播会将错误带到较早的层。
可以[https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/python/keras/_impl/keras/applications](https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/python/keras/_impl/keras/applications) 使用模型定义。 定义了模型中的每一层,并且`ImageNet`数据集上的预训练权重可用
可以使用来自[这里](https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/python/keras/_impl/keras/applications)的模型定义,它定义了模型中的每一层,并且提供`ImageNet`数据集上的预训练权重
# SqueezeNet 模型
Iandola 等人介绍了 **SqueezeNet** 模型。 ( [https://arxiv.org/pdf/1602.07360.pdf](https://arxiv.org/pdf/1602.07360.pdf),以减少模型尺寸和参数数量。
[Iandola 等人介绍了 **SqueezeNet** 模型](https://arxiv.org/pdf/1602.07360.pdf),以减少模型尺寸和参数数量。
通过使用 1 x 1 过滤器替换 3 x 3 过滤器,使网络变得更小,如下所示:
......@@ -540,9 +540,9 @@ Iandola 等人介绍了 **SqueezeNet** 模型。 ( [https://arxiv.org/pdf/1602
经 Iandola 许可复制 等。
# 空间变压器网络
# 空间转换器网络
Jaderberg 等人提出的**空间变压器网络**。 ( [https://arxiv.org/pdf/1506.02025.pdf](https://arxiv.org/pdf/1506.02025.pdf) )尝试在传递到 CNN 之前对图像进行转换。 这与其他网络不同,因为它尝试在卷积之前修改图像。 该网络学习参数以变换图像。 学习用于 **仿射变换**的参数。 通过应用仿射变换,可以实现 **空间不变性** 。 在以前的网络中,空间不变性是通过最大池化层实现的。 空间变压器网络的位置如下所示:
Jaderberg 等人提出的[**空间转换器网络**](https://arxiv.org/pdf/1506.02025.pdf)尝试在传递到 CNN 之前对图像进行转换。 这与其他网络不同,因为它尝试在卷积之前修改图像。 该网络学习参数以变换图像。 学习用于 **仿射变换**的参数。 通过应用仿射变换,可以实现 **空间不变性** 。 在以前的网络中,空间不变性是通过最大池化层实现的。 空间转换器网络的位置如下所示:
![](img/177e14e5-4bc8-4b5c-9e0f-754188739941.png)
......@@ -550,7 +550,7 @@ Jaderberg 等人提出的**空间变压器网络**。 ( [https://arxiv.org/pdf
# DenseNet 模型
DenseNet 是 Huang 等人提出的 ResNet 的扩展。 ( [https://arxiv.org/pdf/1608.06993.pdf](https://arxiv.org/pdf/1608.06993.pdf)。 在 ResNet 块中,上一层通过求和合并到下一层。 在 DenseNet 中,上一层通过串联合并到下一层。 DenseNet 将所有层连接到上一层,将当前层连接到下一层。
[DenseNet 是 Huang 等人提出的 ResNet 的扩展](https://arxiv.org/pdf/1608.06993.pdf)。 在 ResNet 块中,上一层通过求和合并到下一层。 在 DenseNet 中,上一层通过串联合并到下一层。 DenseNet 将所有层连接到上一层,将当前层连接到下一层。
在下图中,可以看出要素图是如何作为输入提供给其他层的:
......@@ -572,7 +572,7 @@ DenseNet 是 Huang 等人提出的 ResNet 的扩展。 ( [https://arxiv.org/pd
# 准备数据
为了进行分类,我们将从 **kaggle** 下载数据并以适当的格式存储。 注册并登录 [www.kaggle.com](http://www.kaggle.com) 并转到 [https://www.kaggle.com/c/dogs-vs-cats/data](https://www.kaggle.com/c/dogs-vs-cats/data) 。 从该页面下载`train.zip``test1.zip`文件。 `train.zip`文件包含 25,000 张宠物数据图像。 我们将仅使用部分数据来训练模型。 具有更多计算能力的读者,例如**图形处理单元****GPU** ),可以使用比建议的更多的数据。 运行以下脚本以重新排列图像并创建必要的文件夹:
为了进行分类,我们将从 **kaggle** 下载数据并以适当的格式存储。 注册并登录 [Kaggle](http://www.kaggle.com) 并转到[猫狗大战](https://www.kaggle.com/c/dogs-vs-cats/data)。 从该页面下载`train.zip``test1.zip`文件。 `train.zip`文件包含 25,000 张宠物数据图像。 我们将仅使用部分数据来训练模型。 具有更多计算能力的读者,例如**图形处理单元****GPU** ),可以使用比建议的更多的数据。 运行以下脚本以重新排列图像并创建必要的文件夹:
```py
import os
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册