本书首先简要介绍流行的TensorFlow库,并讲解如何用它训练不同的神经网络。 你将深入了解神经网络的基础知识和它背后的数学原理,以及为什么我们会选择TensorFlow训练神经网络。然后,你将实现一个简单的前馈神经网络。接下来,你将使用TensorFlow掌握神经网络的优化技术和算法,以及一些更复杂的神经网络的实现。*后,你将对如何利用TensorFlow的强大功能来训练各种复杂的神经网络有一个正确的理解。
如果你意识到到处都有围绕机器学习、人工智能或深度学习等术语的讨论,你可能会知道什么是神经网络。想知道如何利用它们有效地解决复杂的计算问题,或者怎样训练有效的神经网络?本书将教你所有这些以及更多的事情。
首先快速浏览流行的TensorFlow库,并了解如何用它训练不同的神经网络。之后你将深入了解神经网络的基础知识和它背后的数学原理,以及为什么选择TensorFlow训练神经网络。然后,你将实现一个简单的前馈神经网络。接下来,你将掌握使用TensorFlow进行神经网络优化的技术和算法。更进一步,你将学习如何实现一些更复杂的神经网络,如卷积神经网络(CNN)、递归神经网络(RNN)和深度信念网络(DBN)。在学习本书的过程中,为了使你对神经网络编程有深切的理解,将在真实世界的数据集上训练模型。你还将训练生成模型,并学习自编码器的应用。
在本书的最后,你将对如何利用TensorFlow的强大功能来训练各种复杂的神经网络有一个正确的理解,而不会有任何困惑。
本书内容第1章介绍神经网络中基本的代数知识、概率论和优化方法。
第2章介绍感知机、神经元和前馈神经网络的基础知识。你还将学习各种模型学习的技巧,并主要学习称为反向传播的核心学习算法。
第3章介绍对神经网络学习至关重要的优化方法。
第4章详细讨论CNN算法。CNN及其在不同数据类型中的应用也包含在该章中。
第5章详细介绍RNN算法。RNN及其在不同数据类型中的应用也包括在该章中。
第6章介绍生成模型的基础知识以及不同的生成模型。
第7章包括深度信念网络的基础知识、它们与传统神经网络的区别以及它们的实现。
第8章介绍最近处在生成模型前沿的自编码器。
第9章讨论深度学习当前和未来的具体研究内容,并包括一个参考文献。
第10章讨论TensorFlow的环境配置、TensorFlow与Numpy的比较以及自动微分的概念。
准备工作本书将指导你完成所有书中例子所需工具的安装:
Python3.4或更高版本。
TensorFlow 1.4或更高版本。
读者对象本书适合希望使用神经网络的拥有统计背景的开发人员。虽然我们将使用TensorFlow作为神经网络的基础库,但本书可以作为从深度学习数学理论向实际应用转化的通用资源。如果你对TensorFlow和Python有一些了解并希望知道比API更底层的一些情况,本书会很适合你。
本书约定表示警告或重要的注意事项。
表示提示和技巧。
下载示例代码及彩色图片本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
曼普里特•辛格•古特(Manpreet Singh Ghotra)在企业和大数据软件方面拥有超过15年的软件开发经验。 目前,他正致力于开发一个机器学习平台/ API,该平台主要使用诸如TensorFlow、Keras、Apache Spark和PredictionIO等开源库和框架进行开发。他在各种机器学习应用场景上有丰富的经验,其中包括情感分析、垃圾邮件检测、图像调整和异常检测。他是世界上*大在线零售商之一机器学习组的成员,主要工作是使用R和Apache Mahout做运输时间优化。他拥有机器学习方面的研究生学位,为机器学习社区工作并贡献卓越。
译者序
作者简介
审校者简介
前言
第1 章 神经网络的数学原理 1
1.1 理解线性代数 1
1.1.1 环境设置 2
1.1.2 线性代数的数据结构 3
1.1.3 线性代数运算 4
1.1.4 求解线性方程 · 9
1.1.5 奇异值分解 11
1.1.6 特征值分解 14
1.1.7 主成分分析 14
1.2 微积分 15
1.2.1 梯度 16
1.2.2 Hessian 矩阵 23
1.2.3 行列式 24
1.3 最优化 25
1.4 总结 28
第2 章 深度前馈神经网络 29
2.1 定义前馈神经网络 29
2.2 理解反向传播 30
2.3 在TensorFlow 中实现前馈神经网络 · 31
2.4 分析Iris 数据集 · 34
2.5 使用前馈网络进行图像分类 40
2.6 总结 54
第3 章 神经网络的优化 · 55
3.1 什么是优化 55
3.2 优化器的类型 56
3.3 梯度下降 57
3.3.1 梯度下降的变体 58
3.3.2 优化梯度下降的算法 59
3.4 优化器的选择 61
3.5 总结 64
第4 章 卷积神经网络 · 65
4.1 卷积神经网络概述和直观理解 66
4.1.1 单个卷积层的计算 66
4.1.2 TensorFlow 中的CNN 70
4.2 卷积操作 · 72
4.2.1 对图像进行卷积 73
4.2.2 步长 75
4.3 池化 · 76
4.3.1 最大池化 77
4.3.2 示例代码 78
4.4 使用卷积网络进行图像分类 80
4.5 总结 · 102
第5 章 递归神经网络 · 103
5.1 递归神经网络介绍 103
5.1.1 RNN 实现 105
5.1.2 TensorFlow RNN 实现 110
5.2 长短期记忆网络简介 114
5.2.1 LSTM 的生命周期 115
5.2.2 LSTM 实现 117
5.3 情感分析 122
5.3.1 词嵌入 122
5.3.2 使用RNN 进行情感分析 · 128
5.4 总结 134
第6 章 生成模型 135
6.1 生成模型简介 135
6.1.1 判别模型对生成模型 136
6.1.2 生成模型的类型 137
6.2 GAN · 140
6.2.1 GAN 示例 141
6.2.2 GAN 的种类 150
6.3 总结 · 152
第7 章 深度信念网络 · 153
7.1 理解深度信念网络 154
7.2 训练模型 161
7.3 标签预测 162
7.4 探索模型的准确度 162
7.5 DBN 在MNIST 数据集上的应用 · 163
7.5.1 加载数据集 163
7.5.2 具有256 个神经元的RBM层的DBN 的输入参数 · 163
7.5.3 具有256 个神经元的RBM层的DBN 的输出 · 165
7.6 DBN 中RBM 层的神经元数量的影响 · 165
7.6.1 具有512 个神经元的RBM 层 · 165
7.6.2 具有128 个神经元的RBM 层 · 166
7.6.3 准确度指标对比 166
7.7 具有两个RBM 层的DBN 167
7.8 用DBN 对NotMNIST 数据集进行分类 · 169
7.9 总结 172
第8 章 自编码器 173
8.1 自编码算法 174
8.2 欠完备自编码器 175
8.3 数据集 · 175
8.4 基本自编码器 177
8.4.1 自编码器的初始化 177
8.4.2 AutoEncoder 类 178
8.4.3 应用于MNIST 数据集的基本自编码器 180
8.4.4 基本自编码器的完整代码 · 184
8.4.5 基本自编码器小结 186
8.5 加性高斯噪声自编码器 186
8.5.1 自编码器类 187
8.5.2 应用于MNIST 数据集的加性高斯自编码器 188
8.5.3 绘制重建的图像 191
8.5.4 加性高斯自编码器的完整代码 · 192
8.5.5 比较基本自编码器和加性高斯噪声自编码器 193
8.5.6 加性高斯噪声自编码器小结 · 194
8.6 稀疏自编码器 194
8.6.1 KL 散度 194
8.6.2 稀疏自编码器的完整代码 · 196
8.6.3 应用于MNIST 数据集的稀疏自编码器 198
8.6.4 比较稀疏自编码器和加性高斯噪声自编码器 200
8.7 总结 200
第9 章 神经网络研究 · 201
9.1 神经网络中避免过拟合 201
9.1.1 过拟合问题阐述 201
9.1.2 过拟合解决方案 202
9.1.3 影响效果 203
9.2 使用神经网络进行大规模视频处理 204
9.2.1 分辨率改进方案 204
9.2.2 特征直方图基线 205
9.2.3 定量结果 205
9.3 使用双分支互向神经网络进行命名实体识别 206
9.3.1 命名实体识别的例子 206
9.3.2 定义Twinet 207
9.3.3 结果 208
9.4 双向递归神经网络 208
9.5 总结 209
第10 章 开始使用TensorFlow 211
10.1 环境搭建 211
10.2 比较TensorFlow 和Numpy 212
10.3 计算图 213
10.3.1 图 213
10.3.2 会话对象 214
10.3.3 变量 215
10.3.4 域 216
10.3.5 数据输入 217
10.3.6 占位符和输入字典 217
10.4 自动微分 218
10.5 TensorBoard · 219