深度学习快速实践:基于TensorFlow和Keras的深度神经网络优化与训练pdf下载pdf下载

深度学习快速实践:基于TensorFlow和Keras的深度神经网络优化与训练百度网盘pdf下载

作者:
简介:本篇主要提供深度学习快速实践:基于TensorFlow和Keras的深度神经网络优化与训练pdf下载
出版社:机械工业出版社
出版时间:2020-04
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色


内容简介

《深度学习快速实践--——基于TensorFlow和Keras的深度神经网络优化与训练》内容包括神经网络的基础、深度神经网络的优化和验证、深度神经网络开发和训练环境的构建、使用Tensor-Board 进行网络训练的监控和模的超参数优化。本书详细介绍的深度学习问题,包括基本的回归问题、二元分类问题和多元分类问题,还包括较为复杂的卷积神经网络对图像的分类和使用预训练CNN 进行的迁移学习;使用递归神经网络进行时间序列预测、自然语言分类,以及通过sequence-to-sequence 模型进行机器翻译;深度强化学习的智能体构建,以及生成对抗网络的图像生成。

内页插图

目录

目 录

译者序

原书序

原书前言

第1 章 深度学习的构建模块 // 1

1.1 深度神经网络的架构 // 1

1.1.1 神经元 // 1

1.1.2  深度学习中的代价函数和成本函数 // 4

1.1.3 前向传播过程 // 5

1.1.4 反向传播函数 // 5

1.1.5 随机和小批量梯度下降 // 6

1.2 深度学习的优化算法 // 6

1.2.1 采用具有动量的梯度下降 // 6

1.2.2 RMSProp 算法 // 7

1.2.3 Adam 优化器 // 7

1.3 深度学习平台架构 // 7

1.3.1 什么是TensorFlow ? // 7

1.3.2 什么是Keras ? // 8

1.3.3 TensorFlow 的热门替代品 // 8

1.3.4  TensorFlow 和Keras 对GPU的要求 // 8

1.3.5  安装Nvidia CUDA Toolkit 和cuDNN // 9

1.3.6 安装Python // 10

1.3.7 安装TensorFlow 和Keras // 11

1.4 深度学习数据集的构建 // 12

1.4.1  深度学习中的偏差和方差误差 // 13

1.4.2 train、val 和test 数据集 // 13

1.4.3  深度神经网络中的偏差和方差管理 // 14

1.4.4 K-Fold 交叉验证 // 14

1.5 小结 // 15

第2 章  用深度学习解决回归问题 // 16

2.1 回归分析和深度神经网络 // 16

2.1.1  使用神经网络进行回归的好处 // 16

2.1.2  使用神经网络进行回归时需要注意的问题 // 17

2.2 使用深度神经网络进行回归 // 17

2.2.1 如何规划机器学习问题 // 17

2.2.2 定义示例问题 // 17

2.2.3 加载数据集 // 18

2.2.4 定义成本函数 // 19

2.3 在Keras 中建立MLP // 19

2.3.1 输入层的构形 // 20

2.3.2 隐藏层的构形 // 20

2.3.3 输出层的构形 // 20

2.3.4 神经网络的架构 // 20

2.3.5 训练Keras 模型 // 21

2.3.6 评测模型的性能 // 22

2.4 在Keras 中建立深度神经网络 // 22

2.4.1 评测深度神经网络的性能 // 24

2.4.2 模型超参数的调优 // 25

2.5  保存并加载经过训练的Keras模型 // 25

2.6 小结 // 25

第3 章  用TensorBoard 监控网络训练 // 27

3.1 TensorBoard 的概述 // 27

3.2 设置TensorBoard // 27

3.2.1 安装TensorBoard // 28

3.2.2  TensorBoard 如何与Keras /TensorFlow 会话 // 28

3.2.3 运行TensorBoard // 28

3.3 将Keras 连接到TensorBoard // 29

3.3.1 Keras 回调简介 // 29

3.3.2 创建TensorBoard 回调函数 // 29

3.4 使用TensorBoard // 31

3.4.1 网络训练的可视化 // 31

3.4.2 网络结构的可视化 // 32

3.4.3 网络破碎的可视化 // 32

3.5 小结 // 33

第4 章  用深度学习解决二元分类问题 // 34

4.1 二元分类和深度神经网络 // 34

4.1.1 深度神经网络的优点 // 34

4.1.2 深度神经网络的缺点 // 35

4.2 案例研究—癫痫发作识别 // 35

4.2.1 定义数据集 // 35

4.2.2 加载数据 // 35

4.2.3 模型的输入和输出 // 36

4.2.4 成本函数 // 36

4.2.5 性能评估所采用的度量指标 // 37

4.3 在Keras 中构建二元分类器 // 37

4.3.1 输入层 // 38

4.3.2 隐藏层 // 38

4.3.3 输出层 // 39

4.3.4 网络层的合并 // 39

4.3.5 训练模型 // 40

4.4 使用Keras 中的检查点回调函数 // 40

4.5  在自定义回调函数中测量ROC AUC // 41

4.6 精度、召回率和f1 积分的测量 // 42

4.7 小结 // 43

第5 章  用Keras 解决多元分类问题 //44

5.1 多元分类和深度神经网络 // 44

5.1.1 优势 // 44

5.1.2 缺点 // 45

5.2 案例研究—手写数字的分类 // 45

5.2.1 问题定义 // 45

5.2.2 模型的输入和输出 // 45

5.2.3 成本函数 // 46

5.2.4 度量 // 46

5.3 在Keras 中构建多元分类器 // 47

5.3.1 加载MNIST // 47

5.3.2 输入层 // 47

5.3.3 隐藏层 // 47

5.3.4 输出层 // 48

5.3.5 网络的总体结构 // 49

5.3.6 训练 // 49

5.3.7  多类模型中scikit-learn 度量指标的应用 // 50

5.4 通过Dropout 进行方差控制 // 51

5.5 采用正则化进行方差控制 // 54

5.6 小结 // 55

第6 章 超参数的优化 // 56

6.1  网络体系结构应该被视为超参数吗? // 56

6.1.1 站在巨人的肩膀上 // 56

6.1.2  添加至过度拟合,然后进行正则化 // 57

6.1.3 实用建议 // 57

6.2 应该优化哪些超参数? // 57

6.3 超参数优化策略 // 58

6.3.1 常用的策略 // 58

6.3.2 通过scikit-learn 使用随机搜索 // 59

6.3.3 Hyperband // 60

6.4 小结 // 62

第7 章 从头开始训练CNN // 63

7.1 卷积的引入 // 63

7.1.1 卷积层的工作原理 // 64

7.1.2 卷积层的好处 // 65

7.1.3 汇集层 // 66

7.1.4 批量正则化 // 67

7.2 在Keras 中训练卷积神经网络 // 67

7.2.1 输入 // 67

7.2.2 输出 // 67

7.2.3 成本函数和度量指标 // 67

7.2.4 卷积层 // 68

7.2.5 全相连层 // 68

7.2.6 Keras 中的多GPU 模型 // 69

7.2.7 训练 // 69

7.3 使用数据扩增 // 70

7.3.1  Keras 中的图像数据扩增器(ImageDataGenerator 类) // 71

7.3.2 具有数据扩增的训练 // 72

7.4 小结 // 72

第8 章  使用预训练CNN 进行

迁移学习 // 73

8.1 迁移学习概述 // 73

8.2 何时使用迁移学习 // 74

8.2.1 有限的数据 // 74

8.2.2 公共问题域 // 74

8.3 源/ 目标量和相似度的影响 // 75

8.3.1 更多的数据总是有益的 // 75

8.3.2 源/ 目标域的相似度 // 75

8.4 在Keras 中进行迁移学习 // 75

8.4.1 目标域概述 // 76

8.4.2 源域概述 // 76

8.4.3 源网络体系结构 // 76

8.4.4 网络体系结构的迁移 // 77

8.4.5 数据准备 // 77

8.4.6 数据输入 // 78

8.4.7 训练(特征提取) // 78

8.4.8 训练(调优) // 80

8.5 小结 // 81

第9 章 从头开始训练RNN // 82

9.1 递归神经网络概述 // 82

9.1.1 如何让神经元进行递归? // 83

9.1.2 长短时间记忆网络 // 84

9.1.3 在时间上的反向传播 // 86

9.2 重温时间序列问题 // 86

9.2.1 存量和流量 // 87

9.2.2 ARIMA 和ARIMAX 预测 // 87

9.3  使用LSTM 网络进行时间序列预测 // 88

9.3.1 数据准备 // 89

9.3.2 网络输出 // 92

9.3.3 网络体系结构 // 93

9.3.4  stateful 与stateless LSTM网络 // 93

9.3.5 训练 // 93

9.3.6 测量性能 // 94

9.4 小结 // 96

第10 章  从头开始训练具有单词嵌入的LSTM 网络 // 97

10.1 自然语言处理简介 // 97

10.1.1 语义分析 // 98

10.1.2 文档分类 // 98

10.2 文本的矢量化 // 99

10.2.1 NLP 术语 // 99

10.2.2 Bag of Word 模型 // 99

10.2.3  词干化、词形归并和停止词 // 100

10.2.4 计数和TF-IDF 矢量化 // 100

10.3 单词嵌入 // 101

10.3.1 一个简单的例子 // 102

10.3.2  通过预测进行的单词嵌入学习 // 102

10.3.3  通过计数进行的单词嵌入学习 // 104

10.3.4 从单词到文档 // 104

10.4 Keras 嵌入层 // 105

10.5  用于自然语言处理的1D CNN // 105

10.6 文档分类的案例研究 // 106

10.6.1  使用Keras 嵌入层和LSTM网络进行情感分析 // 106

10.6.2  使用和不使用GloVe 的文档分类 // 110

10.7 小结 // 117

第11 章  训练sequence-tosequence模型 // 118

11.1 sequence-to-sequence 模型 // 118

11.1.1  sequence-to-sequence 模型的应用 // 118

11.1.2  sequence-to-sequence 模型的体系结构 // 119

11.1.3 字符与单词 // 120

11.1.4 Teacher forcing // 120

11.1.5 Attention // 121

11.1.6 翻译的度量 // 121

11.2 机器翻译 // 121

11.2.1 了解数据集 // 122

11.2.2 加载数据 // 122

11.2.3 one hot 编码 // 124

11.2.4 训练网络体系结构 // 125

11.2.5 网络体系结构(用于推理) // 126

11.2.6 体系结构的合并 // 127

11.2.7 训练 // 128

11.2.8 推理 // 129

11.3 小结 // 133

第12 章 使用深度强化学习 // 134

12.1 强化学习概述 // 134

12.1.1 Markov 决策过程 // 135

12.1.2 Q-learning // 136

12.1.3 无限的状态空间 // 136

12.1.4 Deep Q 网络 // 137

12.1.5 守成与探索 // 138

12.1.6 DeepMind // 138

12.2 Keras 的强化学习平台架构 // 139

12.2.1 安装Keras-RL // 139

12.2.2 安装OpenAI gym // 139

12.2.3 使用OpenAI gym // 139

12.3  在Keras 中构建一个强化学习智能体 // 140

12.3.1 CartPole // 140

12.3.2 月球着陆器 // 143

12.4 小结 // 145

第13 章 生成对抗网络 // 146

13.1 GAN 的概述 // 146

13.2 深度卷积GAN 的体系结构 // 147

13.2.1 对抗训练体系结构 // 147

13.2.2 生成器的体系结构 // 148

13.2.3 鉴别器的体系结构 // 149

13.2.4 堆训练 // 149

13.3 GAN 如何失效 // 151

13.3.1 稳定性 // 151

13.3.2 模式塌缩 // 151

13.4 GAN 的安全选择 // 151

13.5  使用Keras GAN 进行的MNIST图像生成 // 152

13.5.1 加载数据集 // 152

13.5.2 构建生成器 // 153

13.5.3 构建鉴别器 // 153

13.5.4 堆叠模型的构建 // 154

13.5.5 训练循环 // 155

13.5.6 模型评估 // 157

13.6  使用Keras GAN 进行CIFAR-10图像的生成 // 160

13.6.1 加载CIFAR-10 // 160

13.6.2 构建生成器 // 160

13.6.3 构建鉴别器 // 161

13.6.4 训练循环 // 161

13.6.5 模型评估 // 161

13.7 小结 // 162


前言/序言

原书前言

本书演示了使用深度学习的快速而实用的方法。它专注于现实生活中的问题,并且提供了足够的理论和数据,以加强读者对该主题的理解。深度学习是一个令人兴奋的、快速发展的机器学习分支,但它也是一个可以被再分割的领域。这是一个让人无法抗拒的每天都在进行大量细致复杂研究的领域。在本书中,我将重点讲授您在各种实际问题上应用深度学习的技能。我对本书的最大希望在于它将可以为您提供使用深度学习技术解决机器学习问题所需的工具。

本书读者

我是一名实践数据科学家,我写这本书去记录其他实践数据科学家和机器学习工程师的数据。如果您是应用深度学习的软件工程师,那么本书也适合您。如果您是一个深度学习的研究员,那么这本书也许并不适合您。但是,您也不妨也购买本书,以便对书中缺乏证据和数学严谨性的地方提出批评。

如果您是学术或教育工作者,那么本书绝对适合您。在过去的三年里,我在Illinois 大学Springfield 分校教过“数据科学的调查源”这门课程,在这样做的过程中,我有机会激励了许多未来的机器学习研究人员。这段经历激励我创作本书。我认为这样一本书是帮助

学生建立一个非常复杂的主题的好方法。

本书主要内容

第1章,深度学习的构建模块。回顾有关神经网络运行的一些基础知识,对优化算法和模型验证进行简单介绍,并构建一种适合深度神经网络的开发环境。

第2章,用深度学习解决回归问题。使您能够通过构建非常简单的神经网络来解决回归问题,并探讨这些更深层次、更复杂模型对问题的影响。

第3章,用TensorBoard 监控网络训练。让您立即着手使用TensorBoard,这是一个用于监控和调试未来模型的绝佳应用程序。

第4章,用深度学习解决二元分类问题。将帮助您使用深度学习解决二元分类问题。

第5章,用Keras 解决多元分类问题。带您进行多元分类,并研究其中的误差问题,还会讨论过度拟合管理和最佳安全选择。

第6章,超参数的优化。给出两种不同的模型调优方法。一种是众所周知的、经过实战测试的方法,另一种则是比较先进的方法。

第7章,从头开始训练CNN。教您如何使用卷积网络对图像进行分类。

第8章,用预训练CNN 进行迁移学习。介绍如何在数据非常少的情况下应用迁移学习,使得图像分类器具有惊人的性能。

第9章,从头开始训练RNN。讨论RNN 和LSTM 网络,以及如何将它们用于时间序列预测问题。

第10 章,从头开始训练具有单词嵌入的LSTM 网络。进一步进行LSTM 网络的介绍,并将其应用于自然语言分类任务。

第11 章,训练Seq2Seq 模型。帮助我们使用sequence-to-sequence 模型进行机器翻译。

第12 章,使用深度强化学习。介绍深度强化学习,并构建一个可以驱动一个自主智能体的Deep Q 网络。

第13 章,生成对抗网络。介绍如何使用生成对抗网络来生成令人信服的图像。


更好地利用本书

1)假设您已经体验过更传统的数据科学和预测建模技术,如线性/ 逻辑回归和随机森林算法。如果这是您第一次使用机器学习,那么这对您来说可能有点困难。

2)还假设您至少有一些使用Python 编程的经验,或者至少有一些诸如Java 或C ++ 之类的其他编程语言的经验。

3)深度学习是计算密集型的,我们在这里构建的一些模型需要NVIDIA GPU 才能在合理的时间内运行。如果您没有快速的GPU,那么您可以在Amazon Web Services 或GoogleCloud Platform 上,通过使用基于GPU 的云来实现。


原书序

我第一次见到Mike Bernico 是在我们成为一个财富50 强公司的新数据科学团队的两位创始成员的时候。然而,那时候是一个使人摸不着头脑的时代,由于没有正式的数据科学教育这样的学科,所以我们都是自学成才。我们是一群具有冒险精神的人,并且各自有着不同的背景。之所以关注和学习数据科学和技术,是因为需要通过它们来解决我们感兴趣的问题。

正是以这种务实的精神,Mike 编写了本书。深度学习通常被认为是深奥而难懂的;然而,在本书中,Mike 对深度学习技术的主体内容进行了分解,使其变得容易接近且便于应用。通过本书,您可以快速上手,并以各种不同的形式和风格,将深度学习应用到您自己的项目中。

在该学科被命名之前,Mike 就一直从事数据科学的研究和实践,还专门为大学生讲授这门课程,并且已经持续了三年时间。除此之外,他还是一位拥有多年工作经验的计算机科学家,是网络和安全方面的专家,并且他还具有与人交流和与非专业人士沟通的技巧。他目前是一家大型金融服务公司的首席数据科学家,在那里他设计数据科学系统,为直接应用或学术研究建立机器学习模型,同时也是初级数据科学家的导师,并为相关人士讲授数据科学,他对自己的领域非常精通。

通过本书,您在与作者一起构建示例网络的同时,还可以从Mike 丰富的经验、幽默风趣和切实可行的方法中受益。在读完本书之后,无论是在乐趣还是在功能方面,您都将会有信心和知识来理解深度学习,并将其应用到您自己设计的项目中去。

J. Malia Andrus 博士  

数据科学家  

华盛顿州,西雅图

译者序

人工神经网络(Artifi cial Neural Network,ANN)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法模型。这种网络依靠系统的复杂程度通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。在工

程与学术界也常直接将人工神经网络简称为神经网络。

深度学习是机器学习研究中的一个活跃领域,其动机在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释诸如图像、声音和文本之类的数据。深度学习的概念源于人工神经网络的研究,深度学习结构含有多隐层的多层感知器,通过低层特征的组合形成更加抽象的高层表示属性类别或特征,以发现数据的分布特征表示。由于其强大的功能、良好的适应性,以及其结构的相对规整和易构性,目前在数据分析、图像及语音识别、趋势预测、机器翻译、机器博弈等众多领域均得到了广泛应用,并取得了令人瞩目的表现。

本书的作者Mike Bernico 是一名资深的数据科学家和计算机科学家,在深度神经网络开发和应用方面具有丰富的实践经验。作者撰写本书的目的是应当前深度机器学习研究和应用的需要,将自己在该领域的相关理论积累以及从实践中亲手获得的实际经验分享给读者,使其能够快速了解和掌握深度机器学习的全貌,并迅速着手进行基于TensorFlow 和Keras 的深度神经网络优化与训练。

本书首先在有关神经网络的基础知识的基础上,介绍了深度神经网络的优化算法和模型验证方法,并构建了一种适合深度神经网络开发和训练的环境。结合深度学习问题,进一步介绍了使用TensorBoard 进行网络训练的监控,为读者进行模型训练提供了监控和调试的手段。本书还详细讨论了进行模型调优的超参数优化方法。关于深度学习的问题,本书所介绍的内容包括基本的使用深度学习解决回归问题、二元分类问题和多元分类问题;还包括较为复杂的使用卷积神经网络对图像进行分类和使用预训练的CNN 进行迁移学习,使

得所构建的卷积神经网络即使在数据非常少的情况下也能使图像分类器具有惊人的性能。

本书还详细介绍了使用递归神经网络进行时间序列的预测、自然语言的分类,以及通过sequence-to-sequence 模型的训练进行机器翻译。本书的内容还有使用深度强化学习构建一个自主智能体的方法,以及采用生成对抗网络进行的学习图像的生成。此外,本书还从实

践的角度给出了许多诸如网络过度拟合的解决方法,增强网络稳定性的解决方案等宝贵技巧和经验。

总之,尽管本书的宗旨不在于介绍深度机器学习理论,但也给出了相关的理论基础和相关问题的完整信息,使得本书在注重实践性的前提下,也保证了读者学习的完整性。其所给出的深度神经网络的构建方法、数据集的处理以及网络训练的实施力图详尽,并给出了详细代码,为读者进行深度神经网络的实际开发和应用具有较高的指导和参考价值。对于一个初学者来说,本书的意义在于通过详细的实施过程,使得读者能够透彻理解相应的理论和模型,这对理论学习是非常重要的。对于具有较好理论基础的读者来说,本书的意义在于通过本书的内容,使得读者能够直观地观察到相应模型的表现,这对模型的改进以及理论的创新具有启发性。

本书由王卫兵、田皓元、徐倩等翻译,其中的译者序、原书序、原书前言等部分由徐倩撰写和翻译,第1~4 章由田皓元翻译,第5~13 章由王卫兵翻译。王卓、李想、万文、张宏、张霁、郭文兰、金胜利、卢江、张维波、代德伟参与了本书的翻译工作。全书由王卫兵统稿,并最终定稿。在本书的翻译过程中,全体翻译人员为了尽可能准确地翻译原书内容,对书中的相关内容进行了大量的查证和分析,以求做到准确无误。为方便读者对相关文献的查找和引用,在本书的翻译过程中,本书保留了所有参考文献的原文信息,并保留了所有引用的作者姓名的原文。对书中所应用的专业术语采用了中英文对照的形式。对于本书的翻译,全体翻译人员均做出了巨大努力,付出了艰辛的努力,在此谨向他们表示诚挚的感谢。鉴于本书较强的专业性,并且具有一定的深度和难度,因此,翻译中的不妥和失误之处也在所难免,望广大读者予以批评指正。

译 者  

2019.11 于哈尔滨