# 零、前言

在本书中，您将学习如何有效地使用 TensorFlow，这是 Google 的深度学习开源框架。 您将实现不同的深度学习网络，例如**卷积神经网络**（**CNN**），**循环神经网络**（**RNN**），**深度 Q 学习网络**（**DQN**）和**生成对抗网络**（**GAN**），易于遵循独立的秘籍。 您将学习如何使用 TensorFlow 将 Keras 用作后端。
您将了解如何实现不同的深度神经架构以执行工作中的复杂任务。 您将在一些常用数据集（例如 MNIST，CIFAR-10，Youtube8m 等）上学习不同 DNN 的表现。 您不仅将了解 TensorFlow 支持的不同移动和嵌入式平台，还将了解如何为深度学习应用设置云平台。 简要了解 TPU 架构以及它们将如何影响 DNN 的未来。
到本书结尾，您将成为在不断增长的实际应用和研究领域中实现深度学习技术的专家，这些领域包括增强学习，GAN，自编码器等。

# 本书涵盖的内容

“TensorFlow 简介”讨论了 Google 的开源框架 TensorFlow，以及为什么它对深度学习很有用。 我们将讨论如何在 MAC，Windows 和 Ubuntu 上为 CPU 和 GPU 安装 TensorFlow。 我们还将讨论整本书中将使用的其他 python 包。 我们将解释 TensorFlow 代码的两个组成部分，图的定义及其执行。 我们将学习使用 TensorBoard 查看图结构。 我们将了解 TensorFlow 常量，变量和占位符之间的区别。 我们还将品尝 TensorFlow 估计器。

“回归”讨论了回归及其应用。 我们将讨论回归所涉及的概念，了解回归与聚类和分类的不同之处。 我们将学习可能的不同类型的损失函数以及如何在 Tensorflow 中实现它们。 我们学习如何实现 L1 和 L2 正则化。 我们将讨论梯度下降算法，学习如何优化它并在 Tensorflow 中实现它。 我们将简要了解交叉熵函数及其实现。

“神经网络感知机”，涵盖了人工神经网络，并解释了为什么它可以完成 DNN 最近声称的出色任务。 我们将学习激活函数的不同选择。 我们将使用所有这些来构建一个简单的感知机，并将其用于函数建模。 我们将在训练之前了解数据的正则化。 我们还将学习逐步构建多层感知机（MLP）。 我们将看到 TensorFlow 的自动区分器如何使我们的工作更轻松。

“TensorFlow 卷积神经网络”，讨论了卷积的过程及其如何提取特征。 我们将学习 CNN 的三个重要层：卷积层，池化层和完全连接层。 我们还将学习丢弃，如何提高表现以及不同的 CNN 架构（例如 LeNET 和 GoogleNET）。

“CNN 的运作”，涵盖了 CNN 的一些令人赞叹的成功案例，例如面部识别。 我们将编写一个使用 CNN 进行情感分析的方法。 我们将讨论 CNN 的预调整，并学习如何实现迁移学习。 我们将学习如何使用 VGG16 进行迁移学习。 我们将使用 VGGNet，ResNet，Inception 和 Xception 学习图像的分类。 我们将使用膨胀的卷积网络，Wavenet 和 Nsynth 生成音乐。 我们还将学习如何进行 Visual Q &A。我们将学习如何对视频进行分类。

“循环神经网络”讨论了循环神经网络。 我们将学习 RNN 的基本单元 RNN 单元。 我们将学习单词嵌入和时间排序。 我们将简要讨论 LSTM 网络。 我们将学习 seq2seq RNN。 我们将学习如何将 RNN 应用于机器翻译，生成文本和预测未来价值

“无监督学习”，讲授无监督学习范例。 我们将学习聚类和降维。 我们将学习诸如主成分分析（PCA）之类的技术，并了解如何将其用于降维。 我们将学习 K 均值聚类。 我们将了解地形图的概念，并学习如何训练自组织图。 我们将学习受限玻尔兹曼机（RBM）。 我们将讨论 RBM 的架构和训练。 我们将学习如何堆叠 RBM 来构成深度信念网络，并且将学习如何对其进行训练。 我们将使用预训练和微调进行情感检测的概念来训练 DBN。

“自编码器”，使自编码器神秘化。 我们将学习自编码器及其应用。 我们将讨论可以使用自编码器的各种实际示例。 我们将讨论编码和后续重构的过程。 我们将学习重建误差。 我们将学习稀疏自编码器，即 KL 散度的概念。 我们将学习去噪自编码器，并在给定嘈杂图像的情况下使用它们来重建清晰图像。 我们将学习如何构建卷积自编码器和堆叠式自编码器。

“强化学习”，涵盖了不同的强化学习算法。 我们将学习 Q 学习算法。 我们将讨论 Bellman-Ford 方程以及如何选择学习率，折扣因子。 我们将学习如何使用 OpenAI Gym 框架。 我们将学习经验重放和缓冲的概念，以实现值迭代 Q 网络。 我们将使用 Q 学习和策略梯度来构建游戏智能体。 最后，我们将学习如何建立自己的深度 Q 学习网络（DQN）。 简要描述 AlphaGo Zero 及其大获胜。

第 10 章，“TensorFlow 移动计算”，涵盖了 TensorFlow 移动。 我们将学习移动深度学习的不同应用。 我们将学习如何在 Windows 平台上的 Android Studio 中使用 Tensorflow。 我们将学习如何结合使用 Tensorflow 和 XCode 来制作基于 IOS 的应用。 我们将学习如何优化移动设备的 Tensorflow 图。 我们还将学习如何为移动设备转换 Tensorflow 图。

第 11 章，“TensorFlow 生成对抗网络（GAN），变分自编码器和胶囊网络”，从生成对抗网络及其相对于其他 DNN 的优势开始。 我们探索了不同的预测模型。 我们了解 GAN 的动机及其直观工作。 我们了解基本的 GAN 架构。 我们将探索 GAN 的一些非常酷的应用。 我们将学习另一种生成网络，即变分自编码器。 最后，我们将了解最近提出的胶囊网络

第 12 章，“分布式 TensorFlow 和云深度学习”，介绍了云环境，泊坞窗，容器以及如何使用它们。 *我们将学习如何使用具有多个 GPU 和多个服务器的分布式 Tensorflow。 我们将学习如何设置 AWS 进行深度学习。* 我们将学习如何为深度学习应用设置 Google 云。 我们将学习如何为深度学习应用设置 Microsoft Azure 云。 我们了解其他可用的云服务

附录 A，“通过 AutoML 学习（元学习）”，简要讨论了 AutoML 和连体网络。

附录 B，“TensorFlow 处理单元”，涵盖了 Tensor 处理单元，其基本架构以及它将如何影响 DNN 的未来。

# 这本书需要什么

对于这本书，您将需要 [Python 版本 3.5](https://www.continuum.io/downloads) 和 [TensorFlow](http://www.tensorflow.org)。 建议使用以下硬件规格：

*   CPU 架构：x86_64
*   系统内存：8-32 GB
*   CPU：4-8 核
*   GPU ：（可选，最低 NVDIA®GTX 650）

# 这本书是给谁的

本书面向希望定期执行机器学习任务的数据科学家，机器学习从业人员和深度学习爱好者。 稍微熟悉深度神经网络并希望获得与 CNN 和 RNN 一起工作的专业知识的人会发现这本书很有用。

# 标题

在本书中，您会发现经常出现的几个标题（准备工作，如何做……，如何工作……，还有更多……以及另请参见）。 为了给出有关如何完成秘籍的明确说明，我们使用以下部分。

# 准备

本节将告诉您秘籍中的预期内容，并介绍如何设置秘籍所需的任何软件或任何初步设置。

# 操作步骤

本节包含遵循秘籍所需的步骤。

# 工作原理

本节通常包括对上一节中发生的情况的详细说明。

# 更多

本节包含有关秘籍的其他信息，以使读者对秘籍有更多的了解。

# 另见

本节提供了指向该秘籍其他有用信息的有用链接。

# 约定

在本书中，您将找到许多可以区分不同类型信息的文本风格。 以下是这些风格的一些示例，并解释了其含义。 文本，数据库表名称，文件夹名称，文件名，文件扩展名，路径名，虚拟 URL，用户输入和 Twitter 句柄中的代码字显示如下：“我们刚刚使用以下命令创建了`jiradb`数据库，在数据库中为 JIRA 创建新用户并授予该用户访问权限”。

代码块设置如下：

```py
<Contextpath="/jira"docBase="${catalina.home}
/atlassian- jira" reloadable="false" useHttpOnly="true">
```

任何命令行输入或输出的编写方式如下：

```py
 mysql -u root -p
```

**新术语**和**重要词**以粗体显示。 您在屏幕上看到的单词，例如在菜单或对话框中，将以如下形式出现：从“管理”面板中选择“系统信息”。

警告或重要提示显示如下，提示和技巧显示如下。

