面向机器智能的TensorFlow实践
书籍作者:山姆·亚伯拉罕 |
ISBN:9787111563891 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:4610 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书是一本*佳的TensorFlow入门指南。几位作者都来自研发一线,他们用自己的宝贵经验,结合众多高质量的代码,生动讲解TensorFlow的底层原理,并从实践角度介绍如何将两种常见模型——深度卷积网络、循环神经网络应用到图像理解和自然语言处理的典型任务中。此外,还介绍了在模型部署和编程中可用的诸多实用技巧。
全书分为四部分,共9章。第一部分(第1~2章)讨论TensorFlow的设计模式以及选择TensorFlow作为深度学习库的优势和面临的挑战,并给出详细的安装指南。第二部分(第3~4章)深入介绍TensorFlow API的基础知识和机器学习基础。第三部分(第5~6章)探讨如何用TensorFlow实现高级深度模型,涉及卷积神经网络(或CNN)模型和循环神经网络(或RNN)模型。第四部分(第7~8章)探讨TensorFlow API中*新推出的特性,包括如何准备用于部署的模型、一些有用的编程模式等。第9章给出一些进一步了解TensorFlow的学习资源。
作者简介
山姆·亚伯拉罕:数据科学家、工程师,富有经验的TensorFlow贡献者。
丹尼亚尔·哈夫纳:谷歌软件工程师
埃里克·厄威特:高级软件工程师
阿里尔·斯卡尔皮内里:团队负责人,高级Java开发者
段菲,清华大学信号与信息处理专业博士,前三星电子中国研究院高级研究员,现为英特尔中国研究院高级研究员。研究方向是深度学习、计算机视觉、数据可视化。参与翻译过《机器学习》《机器学习实践:测试驱动的开发方法》《DirectX103D游戏编程深度探索》等多本图书。
编辑推荐
TensorFlow入门权*指南
谷歌研发一线工程师参与撰写,生动讲解TensorFlow底层原理
前言
The Translator's Words
译 者 序
我们正处在一个激动人心的时代,深度学习作为近年来最具突破性的技术之一,极大地推动了人工智能领域的研究进程,并迅速渗透各行各业,同时带动了一大批如家庭服务机器人、自动驾驶这样的新兴产业。不夸张地说,深度学习技术正在深刻地影响着人们的工作、生活和思维方式。
为了帮助人们更高效地从事深度学习研究和应用,并积极分享其研究成果,优秀的开源深度学习框架如雨后春笋般不断涌现。作为深度学习领域巨擘之一的Google也在2015年11月将自己的第二代分布式机器学习系统TensorFlow开源。虽然发布时间较晚,但凭借Google在业内广泛而巨大的影响力以及顶尖的人工智能研究水平,其代码的简洁性、部署的便利性,以及在学术研究和产品研发两端取得的良好平衡,在极短的时间内便从众多优秀的深度学习框架中脱颖而出,获得了广大开发者的强烈关注。自公开发布以来,TensorFlow始终保持着兼收并蓄的态势,不断地从其他优秀开源框架中汲取优秀特性,在广大研究和开发人员的强力推动下,不断快速迭代并大幅提升代码的效率,平均每周的代码更新量都超过了万行,所形成的社区开创了空前的活跃度。完全可以预见,TensorFlow将长期位列一流开源框架的行列。
虽然TensorFlow的优点数不胜数,但其“不足”也较为突出,那就是其接口过于复杂,对初学者的编程技能和知识水平要求偏高,学习曲线过陡。本书的问世在一定程度上缓解了这个矛盾。本书的几位作者都来自Google的研发一线,他们用自己的宝贵经验,结合众多高质量的代码,生动讲解了TensorFlow的底层原理,并从实战角度介绍了如何将两种常见模型——深度卷积网络、循环神经网络应用到图像理解和自然语言处理的典型任务中。难能可贵的是,他们还介绍了在模型部署和编程中可用的诸多实用技巧。总之,本书非常适合TensorFlow的入门学习。
需要说明的是,这并不是一本机器学习理论或深度学习的入门读物,阅读本书需要读者对经典机器学习理论和算法、深度卷积网络、循环神经网络的基本原理有初步的了解,并对Python编程和常用的Python库(如NumPy和matplotlib)较为熟悉。另外,本书的代码是基于TensorFlow 0.8版的,译者对0.9版所做的接口变动以“译者注”的形式做了部分说明,并对原书中的一些错误进行了订正。尽管TensorFlow 1.0版已经正式发布,接口升级相比以往任何一版都要更多,但笔者认为读者朋友大可不必过于担忧。只要清楚地掌握了TensorFlow的基本原理和Python编程,并勤于借助互联网,相信接口问题都可迎刃而解。同时,为方便广大读者的学习,原书作者和译者也会抽时间对本书中的实例代码按照TensorFlow最新版本进行升级,请大家关注原出版社和机械工业出版社相关主题的后续图书。
感谢机械工业出版社张梦玲编辑在本书翻译过程中给予的诸多帮助,也感谢家人对我无微不至的关心。
深入理解深度学习,从了解优秀的开源框架开始,愿读者朋友们的TensorFlow学习之旅一帆风顺!
段菲
2017年3月3日
PREFACE
前 言
欢迎
自2015年11月TensorFlow第一个开源版本发布以来,它便迅速跻身于最激动人心的机器学习库的行列,并在科研、产品和教育等领域正在得到日益广泛的应用。这个库也在不断地得到改进、充实和优化。与此同时,TensorFlow社区正以惊人的速度发展壮大。无论你是新手还是有经验的用户,笔者都希望通过本书帮助你提升使用TensorFlow的能力,使你自如地充分利用这个功能强大的开源库。
本书的内容编排
第一部分:开启TensorFlow之旅
本书第一部分将帮助读者做好使用TensorFlow的准备。第1章为引言,对TensorFlow的历史脉络进行了简要的梳理,并对TensorFlow的设计模式以及选择TensorFlow作为深度学习库的优势和面临的挑战进行了讨论。
引言之后的第2章将介绍安装TensorFlow时应当考虑的因素,并给出了详细的TensorFlow安装指南,即如何从二进制安装包安装和从源码构建TensorFlow。
第二部分:TensorFlow与机器学习基础
从第3章开始,进入本书第二部分。在TensorFlow安装完毕后,第3章将深入介绍TensorFlow API的基础知识,而不会涉及过多的机器学习概念。这样做是为了将“学习TensorFlow”和“学习如何利用TensorFlow从事机器学习相关工作”区分开来。第3章将对TensorFlow API中许多重要的部分进行深入剖析。此外,还将演示如何用可视化的数据流图表示模型,并将其转化为TensorFlow代码,以及如何利用TensorBoard验证数据流图是否被正确建模。
介绍完TensorFlow API的核心概念之后,便进入第4章。这一章将利用TensorFlow实现一些简单的机器学习模型,如线性回归、对数几率回归(logistic regression)和聚类模型。
第三部分:用TensorFlow实现更高级的深度模型
第三部分由两章构成,每章都只关注一种更为复杂的深度学习模型。每章首先对模型进行描述,然后介绍如何用可视化的数据流图表示所要创建的模型。这两章还将讨论为什么要以特定方式构建这些模型,并对所涉及的数学难点进行讲解,之后再介绍如何利用TensorFlow有效地构建这些模型。
所要研究的第一个模型是卷积神经网络(CNN),对应于第5章。该章会介绍如何使用图像数据训练TensorFlow模型,并对卷积的数学原理和使用目的展开讨论,同时还将介绍如何将图像裸数据转化为一种与TensorFlow兼容的格式,以及如何对最终的输出进行测试。
第6章将探讨如何使用TensorFlow正确地构建循环神经网络(RNN)模型。通过各种自然语言处理(NLP)任务,读者将了解如何利用长短时记忆网络(LSTM)以及如何将预训练的词向量包含到模型中。
第四部分:其他提示、技术与特性
本书最后一部分将探讨TensorFlow API中最新推出的特性,内容包括如何准备用于部署的模型、一些有用的编程模式,以及其他精选主题。
其他机器学习库
TensorFlow并非唯一可用的开源机器学习库。下面列出一份可用于深度学习的简短开源库清单:
Caffe专注于卷积神经网络和图像处理,使用C++语言编写。
Chainer是另一个灵活的机器学习Python库,支持单机多GPU运算。
CNTK是微软公司发布的首个开源机器学习库,它拥有自己的模型定义语言,支持声明式的分布式模型构建。
Deeplearning4j是一个专门针对神经网络的Java库,它易于与Spark、Hadoop和其他基于Java的分布式软件集成,具有良好的可伸缩性。
Nervana Neon是一个高效的Python机器学习库,支持单机多GPU运算。
Theano是一个极为灵活的Python机器学习库,因其出众的用户友好性以及可以用异常简单的方式定义复杂模型等特点,在科研领域深受欢迎。TensorFlow的API与Theano API最为相似。
Torch是一个专注于GPU实现的机器学习库,它是用Lua语言编写的,并由来自若干家大公司的研究团队提供支持。
限于篇幅,本书不打算对上述这些库的优缺点展开深入讨论,但如果有时间,非常值得深入展开。TensorFlow的作者在进行框架设计时,便是从当中的几个库汲取了灵感。
先修知识
虽然本书主要关注TensorFlow API,但笔者希望读者已经熟悉大量数学和编程概念,包括:
微积分(一元和多元)
矩阵代数(尤其是矩阵乘法)
基本的编程原理
机器学习的基本概念
此外,读者若能够掌握下列知识,则将从本书中获得更大的收获:
拥有Python编程及模块组织的经验
拥有NumPy库的使用经验
拥有matplotlib库的使用经验
掌握机器学习中更高级的概念,尤其是前馈神经网络、卷积神经网络和循环神经网络
在适宜的时候,笔者会通过一些提示信息帮助读者重新熟悉那些为充分理解相关数学和Python概念所必需的概念。
预期的收获
通过阅读本书,读者将掌握以下内容:
TensorFlow的核心API
TensorFlow的工作流:数据流图的定义和数据流图的执行
如何在各种设备上安装TensorFlow
组织代码和项目的最佳实践
如何用TensorFlow创建核心机器学习模型
如何用TensorFlow实现RNN和CNN
如何用TensorFlow Serving部署代码
利用TensorBoard分析模型的基础知识
在学习完本书之后,如果读者想对TensorFlow获得更多了解,可参考下列资源:
TensorFlow官网 其中包含最新的文档、API和入门材料。
TensorFlow Github代码库 在此,可对TensorFlow的开源实现做出贡献,并直接对源代码进行审查。
官方发布的用TensorFlow实现的机器学习模型 可原封不动地使用这些模型,也可稍加调整以适合自己的设计目的。
谷歌研究院的博客(Google Research Blog) 提供了来自谷歌的有关TensorFlow的应用和更新的最新消息。
Kaggle 获取公开数据集并与其他从事数据分析工作的人开展竞赛的绝佳网站。
Data.gov 美国政府的门户网站,从中可找到全美国的公开数据集。
至此,“动员演讲”已经结束,现在让我们开启本书的学习之旅吧!
目录
译者序
前言
第一部分 开启TensorFlow之旅
第1章 引言2
1.1 无处不在的数据2
1.2 深度学习2
1.3 TensorFlow:一个现代的机器学习库3
1.4 TensorFlow:技术概要3
1.5 何为TensorFlow4
1.5.1 解读来自官网的单句描述4
1.5.2 单句描述未体现的内容6
1.6 何时使用TensorFlow7
1.7 TensorFlow的优势8
1.8 使用TensorFlow所面临的挑战9
1.9 高歌猛进9
第2章 安装TensorFlow10
2.1 选择安装环境10
2.2 Jupyter Notebook与matplotlib12
2.3 创建Virtualenv环境12
2.4 TensorFlow的简易安装13
2.5 源码构建及安装实例:在64位Ubuntu Linux上安装GPU版TensorFlow14
2.5.1 安装依赖库14
2.5.2 安装Bazel15
2.5.3 安装CUDA软件(仅限NVIDIA GPU)16
2.5.4 从源码构建和安装TensorFlow18
2.6 安装Jupyter Notebook20
2.7 安装matplotlib20
2.8 测试TensorFlow、Jupyter Notebook及matplotlib21
2.9 本章小结23
第二部分 TensorFlow与机器学习基础
第3章 TensorFlow基础26
3.1 数据流图简介26
3.1.1 数据流图基础26
3.1.2 节点的依赖关系29
3.2 在TensorFlow中定义数据流图33
3.2.1 构建第一个TensorFlow数据流图33
3.2.2 张量思维39
3.2.3 张量的形状43
3.2.4 TensorFlow的Operation44
3.2.5 TensorFlow的Graph对象46
3.2.6 TensorFlow Session48
3.2.7 利用占位节点添加输入52
3.2.8 Variable对象53
3.3 通过名称作用域组织数据流图56
3.4 练习:综合运用各种组件61
3.4.1 构建数据流图63
3.4.2 运行数据流图66
3.5 本章小结71
第4章 机器学习基础72
4.1 有监督学习简介72
4.2 保存训练检查点74
4.3 线性回归76
4.4 对数几率回归78
4.5 softmax分类83
4.6 多层神经网络85
4.7 梯度下降法与误差反向传播算法88
第三部分 用TensorFlow实现更高级的深度模型
第5章 目标识别与分类96
5.1 卷积神经网络97
5.2 卷积100
5.2.1 输入和卷积核100
5.2.2 跨度102
5.2.3 边界填充104
5.2.4 数据格式104
5.2.5 深入探讨卷积核105
5.3 常见层107
5.3.1 卷积层108
5.3.2 激活函数108
5.3.3 池化层111
5.3.4 归一化113
5.3.5 高级层114
5.4 图像与TensorFlow116
5.4.1 加载图像116
5.4.2 图像格式117
5.4.3 图像操作121
5.4.4 颜色127
5.5 CNN的实现129
5.5.1 Stanford Dogs数据集129
5.5.2 将图像转为TFRecord文件130
5.5.3 加载图像133
5.5.4 模型134
5.5.5 训练136
5.5.6 用TensorBoard调试滤波器137
5.6 本章小结139
第6章 循环神经网络与自然语言处理140
6.1 循环神经网络简介140
6.1.1 时序的世界140
6.1.2 近似任意程序141
6.1.3 随时间反向传播142
6.1.4 序列的编码和解码143
6.1.5 实现第一个循环神经网络145
6.1.6 梯度消失与梯度爆炸145
6.1.7 长短时记忆网络147
6.1.8 RNN结构的变种148
6.2 词向量嵌入149
6.2.1 准备维基百科语料库151
6.2.2 模型结构155
6.2.3 噪声对比分类器156
6.2.4 训练模型156
6.3 序列分类157
6.3.1 Imdb影评数据集158
6.3.2 使用词向量嵌入159
6.3.3 序列标注模型159
6.3.4 来自最后相关活性值的softmax层161
6.3.5 梯度裁剪162
6.3.6 训练模型163
6.4 序列标注164
6.4.1 OCR数据集164
6.4.2 时间步之间共享的soft-max层166
6.4.3 训练模型169
6.4.4 双向RNN171
6.5 预测编码174
6.5.1 字符级语言建模174
6.5.2 ArXiv摘要API175
6.5.3 数据预处理177
6.5.4 预测编码模型178
6.5.5 训练模型182
6.5.6 生成相似序列185
6.6 本章小结188
第四部分 其他提示、技术与特性
第7章 产品环境中模型的部署190
7.1 搭建TensorFlow服务开发环境190
7.1.1 Docker镜像190
7.1.2 Bazel工作区191
7.2 导出训练好的模型192
7.3 定义服务器接口195
7.4 实现推断服务器197
7.5 客户端应用201
7.6 产品准备203
7.7 本章小结203
第8章 辅助函数、代码结构和类204
8.1 确保目录结构存在204
8.2 下载函数204
8.3 磁盘缓存修饰器205
8.4 属性字典206
8.5 惰性属性修饰器207
8.6 覆盖数据流图修饰器209
第9章 结语:其他资源212