首页>参考读物>计算机科学与技术>软件与程序设计

TensorFlow神经网络编程
作者 : [印度]曼普里特·辛格·古特(Manpreet Singh Ghotra) 拉蒂普·杜瓦(Rajdeep Dua)著
译者 : 马恩驰 陆健 译
出版日期 : 2018-10-23
ISBN : 978-7-111-61178-3
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 233
开本 : 16
原书名 : Neural Network Programming with TensorFlow
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书首先简要介绍流行的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,通过注册并登录个人账号下载。

上架指导

计算机\人工智能

封底文字

如果你意识到到处都有围绕机器学习、人工智能或深度学习等术语的讨论,你可能会知道什么是神经网络。有没有想过它们如何有效地解决复杂的计算问题?或者怎样训练高效的神经网络? 这本书将教你所有这些以及更多的事情。
TensorFlow作为Google开源的深度学习计算框架,支持包括CNN、RNN、LSTM等多种神经网络模型。由于其强大丰富的功能、高度灵活的API,目前TensorFlow受到了业界的高度关注。
本书详细讲解如何基于TensorFlow实现不同类型的神经网络——从简单的前馈神经网络到多层感知器、CNN、RNN和DBN等,并提供大量现实数据集和用例,以加深你对神经网络及其实现的理解。
通过阅读本书,你将:
获得安装TensorFlow库的基础知识。
深入了解神经网络的基础知识和它背后的数学原理,以及为什么会选择TensorFlow训练神经网络。
使用TensorFlow实现一个简单的前馈神经网络。
使用TensorFlow掌握神经网络的优化技术和算法,以及一些更复杂的神经网络的实现。
了解如何利用TensorFlow的强大功能来训练各种复杂的神经网络。

作者简介

[印度]曼普里特·辛格·古特(Manpreet Singh Ghotra) 拉蒂普·杜瓦(Rajdeep Dua)著:曼普里特•辛格•古特(Manpreet Singh Ghotra)在企业和大数据软件方面拥有超过15年的软件开发经验。 目前,他正致力于开发一个机器学习平台/ API,该平台主要使用诸如TensorFlow、Keras、Apache Spark和PredictionIO等开源库和框架进行开发。他在各种机器学习应用场景上有丰富的经验,其中包括情感分析、垃圾邮件检测、图像调整和异常检测。他是世界上最大在线零售商之一机器学习组的成员,主要工作是使用R和Apache Mahout做运输时间优化。他拥有机器学习方面的研究生学位,为机器学习社区工作并贡献卓越。

译者序

以深度学习为代表的人工智能在计算机视觉、语音识别、自然语言处理方面已经取得了突破性的进展。越来越多的公司更倾向于使用深度学习模型来解决业务场景中的问题。在众多的计算框架中,作为Google最新开源的深度学习计算框架,TensorFlow支持包括CNN、RNN、LSTM等多种神经网络模型。由于其强大丰富的功能、高度灵活的API,目前TensorFlow受到了业界的高度关注。
TensorFlow作为主流的深度学习框架仍在不断地演进。北京时间2018年3月31日,美国加利福尼亚州山景城的计算机历史博物馆举办了第二届TensorFlow开发者峰会,吸引了超过500名TensorFlow用户亲临现场,数万名来自世界各国的观众观看了本次峰会的直播。活动当天,TensorFlow 团队和邀请嘉宾举办了多场技术讲座。编程语言方面,TensorFlow会支持越来越多的ML算法,对接以js和swift为代表的越来越多的编程语言。数据IO方面,输入数据的处理非常重要,良好的深度学习框架不仅需要支持不同类型的数据源以及数据格式,同时还要保证高吞吐率,以满足日益发展的硬件需求。本次大会引入了tf.data API。tf.data采用了标准数据库领域里的ETL概念,将主要的接口封装起来。并且可以通过chaining的方式组合。加载图片数据的速度可达13k/s。上层API上,大会还是推广Estimator的使用,Estimator在特征工程上提供了更便捷的上层API,可使特征值分箱、特征交叉、特征嵌入更便捷。值得一提的是,在浏览器上支持深度学习意义重大,因为浏览器可以有更好的可视化能力,在模型调参和增加结果的可解释性方面大有裨益,比如TensorFlow Playground就是成功的案例。
在商业领域应用方面,国内各大公司都在广泛使用TensorFlow,并在分布式训练、模型压缩与加速、在线预测方面进行了优化。在场景应用方面,我们团队开发的个性化表征学习和深度语义模型已全量上线,并取得了不错的abtest效果,训练框架均基于TensorFlow。其中,个性化表征学习主要应用于搜索排序,通过视频的文本信息和统计特征编码对视频进行表达,并通过视频观看的i2i和u2i分别在视频观看序列上对相关视频和用户视频观看兴趣做个性化表达。最后,基于曝光点击行为数据处理得到标签以进行训练,线上效果证明,用户在头部宽泛意图下对视频内容有较大的个性化需求。相关性计算的深度语义模型,通过对视频的文本信息进行编码,基于人工标注的标签数据进行训练。深度语义模型在尾部搜索意图下的视频结果有明显的体验提升。
本书简明扼要地介绍了如何基于TensorFlow实现神经网络,并在代码实现方面做了详尽的说明。全书由我和陆健翻译完成,在繁重的工作之余挤出时间完成翻译需要极大的毅力。其中,我参与翻译了第1、3、5、7、9章,陆健参与翻译了第2、4、6、8、10章。由于水平有限,书中可能会有翻译不妥之处,读者在阅读过程中若发现不妥之处,欢迎发邮件至maec1208@gmail.com。
感谢机械工业出版社华章分社的王春华编辑为本书翻译及出版过程中所做的努力,感谢我的爱人和孩子在翻译过程中给予的支持,你们是我坚持奋斗的最大动力。

马恩驰
2018年9月于杭州

图书目录

译者序
作者简介
审校者简介
前言
第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

教学资源推荐
作者: [美]本贾尼·斯特劳斯特卢普(Bjarne Stroustrup) 著
作者: 刘振安