提交 e7b0e589 编写于 作者: W wizardforcel

2021-01-16 17:40:11

上级 0f60f5c5
# 前言
**人工** **智能****AI**)继续流行并破坏了广泛的领域,但这是一个复杂而艰巨的话题。 在本书中,您将掌握构建深度学习应用程序的方法,以及如何使用 PyTorch 进行研究和解决实际问题。
**人工智能****AI**)继续流行并破坏了广泛的领域,但这是一个复杂而艰巨的话题。 在本书中,您将掌握构建深度学习应用程序的方法,以及如何使用 PyTorch 进行研究和解决实际问题。
本书从张量处理的基础开始,采用基于配方的方法,然后介绍了**卷积** **神经网络****CNN**)和 PyTorch 中的**循环神经网络****RNN**)。 熟悉这些基本网络后,您将使用深度学习来构建医学图像分类器。 接下来,您将使用 TensorBoard 进行可视化。 您还将深入研究**生成性** **对抗性** **网络****GAN**)和**深度** **增强** **学习****DRL**),然后最终将模型大规模部署到生产中。 您将发现针对机器学习,深度学习和强化学习中常见问题的解决方案。 您将学习如何在计算机视觉,**自然** **语言** **处理****NLP**)中实现 AI 任务并解决实际问题。 其他实际领域。
本书从张量处理的基础开始,采用基于配方的方法,然后介绍了**卷积神经网络****CNN**)和 PyTorch 中的**循环神经网络****RNN**)。 熟悉这些基本网络后,您将使用深度学习来构建医学图像分类器。 接下来,您将使用 TensorBoard 进行可视化。 您还将深入研究**生成对抗网络****GAN**)和**深度强化学习****DRL**),然后最终将模型大规模部署到生产中。 您将发现针对机器学习,深度学习和强化学习中常见问题的解决方案。 您将学习如何在计算机视觉,**自然语言处理****NLP**)中实现 AI 任务并解决实际问题。 其他实际领域。
到本书结尾,您将拥有使用 PyTorch 框架的 AI 中最重要且应用最广泛的技术的基础。
......@@ -12,21 +12,21 @@
# 本书涵盖的内容
第 1 章*使用 PyTorch 处理张量*介绍 PyTorch 及其安装,然后继续使用 PyTorch 处理张量。
第 1 章,“使用 PyTorch 处理张量”介绍 PyTorch 及其安装,然后继续使用 PyTorch 处理张量。
第 2 章,*处理神经网络*全面介绍了开始和训练全连接神经网络的所有要求,从而对基本神经网络的所有组件进行了详尽的解释。 :层,前馈网络,反向传播,损失函数,梯度,权重更新以及使用 CPU / GPU。
第 2 章,“处理神经网络”全面介绍了开始和训练全连接神经网络的所有要求,从而对基本神经网络的所有组件进行了详尽的解释。 :层,前馈网络,反向传播,损失函数,梯度,权重更新以及使用 CPU / GPU。
第 3 章,*用于计算机视觉的卷积神经网络*首先介绍了用于更高级任务的一类神经网络,即卷积神经网络。 在这里,我们将与 PyTorch 一起探索 TorchVision,训练 CNN 模型,并使用 TensorBoard 可视化其进度。 我们还将介绍与卷积网络构建块相关的各种任务。 卷积神经网络(CNN 或 ConvNet)是一类 DNN,最常用于分析图像。
第 3 章,“用于计算机视觉的卷积神经网络”首先介绍了用于更高级任务的一类神经网络,即卷积神经网络。 在这里,我们将与 PyTorch 一起探索 TorchVision,训练 CNN 模型,并使用 TensorBoard 可视化其进度。 我们还将介绍与卷积网络构建块相关的各种任务。 卷积神经网络(CNN 或 ConvNet)是一类 DNN,最常用于分析图像。
第 4 章*用于 NLP 的循环神经网络*探索循环神经网络,并研究 RNN 中的各种修改以及最佳实践。
第 4 章,“用于 NLP 的循环神经网络”探索循环神经网络,并研究 RNN 中的各种修改以及最佳实践。
第 5 章,*迁移学习和 TensorBoard* 显示了如何使用经过训练的 ResNet-50 模型训练图像分类器以区分正常和肺炎的胸部 X 射线。 我们将替换分类器,并使用两个输出单位来代表正常和肺炎类别。
第 5 章,“迁移学习和 TensorBoard”显示了如何使用经过训练的 ResNet-50 模型训练图像分类器以区分正常和肺炎的胸部 X 射线。 我们将替换分类器,并使用两个输出单位来代表正常和肺炎类别。
第 6 章*探索生成对抗网络*探索生成对抗网络,以及如何实现 PyTorch 的组件并训练端到端网络。 我们将探索 DCGAN,并通过渐进式 GAN 网络进一步改善 DCGAN 的局限性。
第 6 章,“探索生成对抗网络”探索生成对抗网络,以及如何实现 PyTorch 的组件并训练端到端网络。 我们将探索 DCGAN,并通过渐进式 GAN 网络进一步改善 DCGAN 的局限性。
第 7 章,*深度强化学习*可帮助您通过各种食谱来了解深度 RL。 本章是一系列食谱和任务,您将在其中利用所需的能力和架构来转变为深度强化学习专家。
第 7 章,“深度强化学习”可帮助您通过各种食谱来了解深度 RL。 本章是一系列食谱和任务,您将在其中利用所需的能力和架构来转变为深度强化学习专家。
第 8 章*在 PyTorch* 中生产 AI 模型,着眼于以两种方式生产 PyTorch 应用程序。 首先,生成已经训练过的模型,其次,对大型数据集进行分布式训练。 最后,我们将研究各种框架之间的可移植性。
第 8 章,“PyTorch 中的生产 AI 模型”,着眼于以两种方式生产 PyTorch 应用程序。 首先,生成已经训练过的模型,其次,对大型数据集进行分布式训练。 最后,我们将研究各种框架之间的可移植性。
# 充分利用这本书
......@@ -84,7 +84,7 @@ torch.Size([2, 3])
pip3 install https://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl
```
**粗体**:表示新术语,重要单词或您在屏幕上看到的单词。 例如,菜单或对话框中的单词会出现在这样的文本中。 这是一个示例:“ **标量**是单个独立值。”
**粗体**:表示新术语,重要单词或您在屏幕上看到的单词。 例如,菜单或对话框中的单词会出现在这样的文本中。 这是一个示例:“**标量**是单个独立值。”
警告或重要提示如下所示。
......@@ -92,7 +92,7 @@ pip3 install https://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_am
# 栏目
在本书中,您会发现几个经常出现的标题(*准备工作**如何执行...**工作原理...* ,[ *和*,另请参阅*)。*
在本书中,您会发现几个经常出现的标题(“准备工作”,“操作步骤”,“工作原理”,“另见”。
要给出有关如何完成配方的明确说明,请按以下说明使用这些部分:
......
......@@ -603,7 +603,7 @@ pip install torchvision==0.x.x
# 定义 CNN 架构
到目前为止,在本章中,我们一直在研究 CNN 的不同组成部分,以及如何将数据集中的数据加载到可以馈入 CNN 模型的格式中。 在本食谱中,我们将通过到目前为止已经看到的完成模型的组件来定义 CNN 模型架构。 这与我们在第 2 章,*处理神经网络*中介绍的全连接神经网络非常相似。 为了更好地理解此配方,从第 2 章,*处理神经网络*修改全连接神经网络的模型定义将是一个好主意。 我们将在 CIFAR10 数据集上建立图像分类模型,我们在*加载图像数据*配方中对此进行了讨论。
到目前为止,在本章中,我们一直在研究 CNN 的不同组成部分,以及如何将数据集中的数据加载到可以馈入 CNN 模型的格式中。 在本食谱中,我们将通过到目前为止已经看到的完成模型的组件来定义 CNN 模型架构。 这与我们在第 2 章,“处理神经网络”中介绍的全连接神经网络非常相似。 为了更好地理解此配方,从第 2 章,“处理神经网络”修改全连接神经网络的模型定义将是一个好主意。 我们将在 CIFAR10 数据集上建立图像分类模型,我们在*加载图像数据*配方中对此进行了讨论。
# 怎么做...
......@@ -676,7 +676,7 @@ CNN(
# 这个怎么运作...
此食谱的工作方式与第 2 章*处理神经网络*时非常相似,当我们研究一个全连接神经网络时。 我们从`__init__()`方法和父类的构造函数开始,定义了从 PyTorch 中的`nn.Module`继承的 CNN 类。 之后,我们通过传入与每一层相关的参数来定义 CNN 中的各个层。 对于我们的第一卷积层,输入通道的数量为 3(RGB),输出通道的数量定义为 16,其平方核大小为 3。第二卷积层采用上一层的张量,并具有 16 个输入通道和 32 个输出通道,内核尺寸为 3 x3。类似地,第三卷积层具有 32 个输入通道和 64 个输出通道,内核尺寸为 3 x 3。 我们还需要一个最大池化层,并使用 2 的内核大小和 2 的步幅。我们使用`.view()`将张量的三个维度展平为一个维度,以便可以将其传递到全连接网络中。 `view`函数中的-1 通过确保`view`函数之前和之后的元素数量保持相同(在本例中为批量大小)来确保将正确的尺寸自动分配给该尺寸。
此食谱的工作方式与第 2 章,“处理神经网络”时非常相似,当我们研究一个全连接神经网络时。 我们从`__init__()`方法和父类的构造函数开始,定义了从 PyTorch 中的`nn.Module`继承的 CNN 类。 之后,我们通过传入与每一层相关的参数来定义 CNN 中的各个层。 对于我们的第一卷积层,输入通道的数量为 3(RGB),输出通道的数量定义为 16,其平方核大小为 3。第二卷积层采用上一层的张量,并具有 16 个输入通道和 32 个输出通道,内核尺寸为 3 x3。类似地,第三卷积层具有 32 个输入通道和 64 个输出通道,内核尺寸为 3 x 3。 我们还需要一个最大池化层,并使用 2 的内核大小和 2 的步幅。我们使用`.view()`将张量的三个维度展平为一个维度,以便可以将其传递到全连接网络中。 `view`函数中的-1 通过确保`view`函数之前和之后的元素数量保持相同(在本例中为批量大小)来确保将正确的尺寸自动分配给该尺寸。
对于第一个全连接层,我们有 1,024 个输入(通过将最大池后的`64 x 4 x 4`张量展平而获得)和 512 个输出。 对于最后一个全连接层,我们有 512 个输入和 10 个输出,代表输出类别的数量。 我们还为全连接层定义了一个辍学层,概率为 0.3。
......@@ -694,7 +694,7 @@ CNN(
# 训练图像分类器
现在我们已经定义了模型,接下来的主要步骤是使用手头的数据训练该模型。 这将与我们在第 2 章,*处理神经网络*和我们全连接神经网络中进行的训练非常相似。 在本食谱中,我们将完成训练图像分类器的工作。 如果您在完成本食谱之前,先阅读了第 2 章和*与神经网络**实现优化器*食谱,那将非常有用。
现在我们已经定义了模型,接下来的主要步骤是使用手头的数据训练该模型。 这将与我们在第 2 章,“处理神经网络”和我们全连接神经网络中进行的训练非常相似。 在本食谱中,我们将完成训练图像分类器的工作。 如果您在完成本食谱之前,先阅读了第 2 章和*与神经网络**实现优化器*食谱,那将非常有用。
# 怎么做...
......
......@@ -472,7 +472,7 @@ return self.fc(hidden)
# 还有更多...
对于具有两个以上状态的毒性审查任务,我们将使用`CrossEntropyLoss()`,对于仅具有一个输出的情感分析器,我们将使用`BCEWithLogitsLoss()`。 其余训练与我们在第 3 章,*用于计算机视觉的卷积神经网络*中看到的内容相同,我们在其中训练了卷积神经网络。
对于具有两个以上状态的毒性审查任务,我们将使用`CrossEntropyLoss()`,对于仅具有一个输出的情感分析器,我们将使用`BCEWithLogitsLoss()`。 其余训练与我们在第 3 章,“用于计算机视觉的卷积神经网络”中看到的内容相同,我们在其中训练了卷积神经网络。
# 也可以看看
......
......@@ -34,7 +34,7 @@ GAN 中的两个模型称为生成器和鉴别器,其中生成器负责创建
# 创建一个 DCGAN 生成器
在本食谱及其后续食谱中,我们将实现 DCGAN。 DCGAN 代表“深度卷积 GAN”; 与香草 GAN 相比,它们有很大的改进。 在 DCGAN 中,我们使用卷积神经网络,而不是香草 GAN 中的全连接网络。 在第 3 章*用于计算机视觉的卷积神经网络*中,我们看到了第 2 章和*的全连接分类器如何处理神经网络* ,是该领域的一项改进; DCGAN 与香草 GAN 的情况相同。 在 DCGAN 中,我们将使用批量归一化,这是一种技术,它可以将作为输入输入到下一层的层的输出归一化。 批量归一化允许网络的每一层独立于其他层进行学习,从而减少了协变量偏移。
在本食谱及其后续食谱中,我们将实现 DCGAN。 DCGAN 代表“深度卷积 GAN”; 与香草 GAN 相比,它们有很大的改进。 在 DCGAN 中,我们使用卷积神经网络,而不是香草 GAN 中的全连接网络。 在第 3 章,“用于计算机视觉的卷积神经网络”中,我们看到了第 2 章和*的全连接分类器如何处理神经网络* ,是该领域的一项改进; DCGAN 与香草 GAN 的情况相同。 在 DCGAN 中,我们将使用批量归一化,这是一种技术,它可以将作为输入输入到下一层的层的输出归一化。 批量归一化允许网络的每一层独立于其他层进行学习,从而减少了协变量偏移。
批量归一化是通过缩放来实现的,以使平均值为 0,方差为 1。在此配方中,我们将生成类似于 MNIST 数据集的手写数字,其中包含来自噪声矢量的数据。 我们将扩展此噪声矢量,将其转换为 2D 矩阵,最后将其转换为 28 x 28 黑白图像。 为了增加高度和宽度,我们必须执行与卷积操作相反的操作,这称为反卷积。 我们将在使用卷积执行分类任务时执行此操作。 在执行反卷积时,我们将增加高度和宽度,同时减少通道数。
......@@ -42,7 +42,7 @@ GAN 中的两个模型称为生成器和鉴别器,其中生成器负责创建
![](img/89189246-b3a7-49dc-acc5-78bc00c5f9b7.png)
请注意,我们将使用第 3 章*用于计算机视觉的卷积神经网络* *和*中的概念,因此再次阅读这些食谱将非常有用。
请注意,我们将使用第 3 章,“用于计算机视觉的卷积神经网络” *和*中的概念,因此再次阅读这些食谱将非常有用。
# 怎么做...
......@@ -114,7 +114,7 @@ def forward(self, input):
# 这个怎么运作...
在此食谱中,我们进行了变换以将图像转换为张量并对其进行归一化,就像在第 3 章*用于计算机视觉的卷积神经网络*中所做的一样。 然后,我们确定了机器上的设备:CPU 或 GPU。 然后,我们定义了从`nn.Module`类继承的`Generator_model`类,就像在所有以前的架构中所做的一样。
在此食谱中,我们进行了变换以将图像转换为张量并对其进行归一化,就像在第 3 章,“用于计算机视觉的卷积神经网络”中所做的一样。 然后,我们确定了机器上的设备:CPU 或 GPU。 然后,我们定义了从`nn.Module`类继承的`Generator_model`类,就像在所有以前的架构中所做的一样。
在构造函数中,我们传递了`z_dim`参数,这是我们的噪声矢量大小。 然后,我们定义了一个全连接单元`self.fc`,我们将噪声矢量传递给该单元,并为其提供了`256 * 7 * 7`输出。 然后,我们定义了一个称为`self.gen``nn.Sequential`单元,其中包含用于定义生成器的关键组件。 我们使用 PyTorch 中提供的`nn.ConvTranspose2d``nn.BatchNorm2d``nn.LeakyReLU`使用一组反卷积,批处理规范化和激活层。 `ConvTranspose2d`接受输入通道,输出通道,内核大小,步幅和填充等参数。 `BatchNorm2d`接受上一层的要素/通道数作为其参数,而 LeakyReLU 接受负斜率的角度。
......@@ -136,7 +136,7 @@ def forward(self, input):
# 准备好
在本食谱中,我们将严重依赖第 3 章*用于计算机视觉的卷积神经网络*的食谱,因此最好快速浏览 第 3 章,*用于计算机视觉的卷积神经网络*
在本食谱中,我们将严重依赖第 3 章,“用于计算机视觉的卷积神经网络”的食谱,因此最好快速浏览 第 3 章,“用于计算机视觉的卷积神经网络”
# 怎么做...
......
......@@ -440,7 +440,7 @@ pip install onnx
这样,我们就可以进行配方了。
对于此配方,我们还将需要在第 3 章*用于计算机视觉的卷积神经网络*中在`CIFAR-10`上训练的模型的训练权重。
对于此配方,我们还将需要在第 3 章,“用于计算机视觉的卷积神经网络”中在`CIFAR-10`上训练的模型的训练权重。
# 怎么做...
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册