编辑推荐

适读人群:希望了解和应用TensorFlow和深度学习技术的数据科学家、工程师,对人工智能、深度学习感兴趣的计算机领域从业人员,高等院校相关专业学生

1.牛津大学物联网课程创建者和首席数据科学家AjitJaokar为《精通TensorFlow》作序并倾情推荐。
2.通过阅读《精通TensorFlow》,能够深入了解和掌握TensorFlow,并能构建实用的机器学习和深度学习系统。
3.《精通TensorFlow》涵盖了TensorFlow1.x的许多高级功能,并涉及很多先进的技术,如迁移学习、深度强化学习、生成对抗网络等。
4.《精通TensorFlow》提供了大量示例,其代码可以通过GitHub网址下载,具体地址见封面背面。

内容简介

TensorFlow是目前流行的数值计算库,专用于构建分布式、云计算和移动环境。TensorFlow将数据表示为张量,将计算表示为计算图。
《精通TensorFlow》是一本综合指南,可让您理解TensorFlow1.x的高级功能,深入了解TensorFlow内核、Keras、TFEstimator、TFLearn、TFSlim、PrettyTensor和Sonnet。利用TensorFlow和Keras提供的功能,使用迁移学习、生成对抗网络和深度强化学习等概念来构建深度学习模型。通过《精通TensorFlow》,您将获得在各种数据集(例如MNIST、CIFAR-10、PTB、text8和COCO图像)上的实践经验。
您还能够学习TensorFlow1.x的高级功能,例如分布式TensorFlow,使用TensorFlow服务部署生产模型,以及在Android和iOS平台上为移动和嵌入式设备构建和部署TensorFlow模型。您将看到如何在R统计软件中调用TensorFlow和KerasAPI,还能了解在TensorFlow的代码无法按预期工作时所需的调试技术。
《精通TensorFlow》可帮助您深入了解TensorFlow,使您成为解决人工智能问题的专家。总之,在学习《精通TensorFlow》之后,可掌握TensorFlow和Keras的产品,并获得构建更智能、更快速、更高效的机器学习和深度学习系统所需的技能。

作者简介

作者:

Fandango利用自己在深度学习、计算方法和分布式计算方面的专业知识,创造了人工智能(AI)产品。他为Owen.ai公司在AI产品战略方面提供建议。他创建了NeuraSights公司,其目标是利用神经网络创建有技术深度的产品。他还创建了Vets2Data公司,这家非盈利机构主要帮助美国退役军人掌握AI技能。
Armando出版了2本专著,并在国际期刊和会议上发表了他的研究成果。

译者:

刘波博士,重庆工商大学人工智能学院副教授,主要研究领域为机器学习理论、计算机视觉和自然语言处理,同时爱好Hadoop和Spark平台上的大数据分析。

何希平博士,重庆工商大学人工智能学院院长、教授,主要研究领域为时序分析、推荐系统。

精彩书评

《精通TensorFlow》深入介绍了Keras与核心TensorFlow库,并探讨了高级主题,如Sonnet、带有TF集群的分布式TensorFlow、使用TensorFlow服务部署生产模型、TensorFlow在移动设备和嵌入式设备上的开发。

《精通TensorFlow》涉及很多先进的技术,比如深度学习模型中的RNN、CNN、自编码器、生成对抗模型和深度强化学习。ArmandoFandango利用他的经验对这些内容进行了清楚的讲解,有助于读者更方便地理解这些复杂的内容。

AjitJaokar

牛津大学物联网课程创建者和首席数据科学家

目录

译者序

原书序

原书前言

第1章 TensorFlow101//1

1.1 什么是TensorFlow//1

1.2 TensorFlow内核//2

1.2.1 简单的示例代码-HelloTensorFlow//2

1.2.2 张量//3

1.2.3 常量//4

1.2.4 操作//5

1.2.5 占位符//6

1.2.6 从Python对象创建张量//7

1.2.7 变量//9

1.2.8 由库函数生成的张量//10

1.2.9 通过tf.get_variable()获取变量//13

1.3 数据流图或计算图//14

1.3.1 执行顺序和延迟加载//15

1.3.2 跨计算设备执行计算图-CPU和GPU//15

1.3.3 多个计算图//18

1.4 TensorBoard//19

1.4.1 TensorBoard最小的例子//19

1.4.2 TensorBoard的细节//21

1.5 总结//21

第2章 TensorFlow的高级库//22

2.1 TFEstimator//22

2.2 TFSlim//24

2.3 TFLearn//25

2.3.1 创建TFLearn层//26

2.3.2 创建TFLearn模型//30

2.3.3 训练TFLearn模型//30

2.3.4 使用TFLearn模型//30

2.4 PrettyTensor//31

2.5 Sonnet//32

2.6 总结//34

第3章 Keras101//35

3.1 安装Keras//35

3.2 Keras的神经网络模型//36

3.2.1 在Keras中创建模型的过程//36

3.3 创建Keras模型//36

3.3.1 用于创建Keras模型的序列化API//36

3.3.2 用于创建Keras模型的功能性API//37

3.4 Keras的层//37

3.4.1 Keras内核层//37

3.4.2 Keras卷积层//38

3.4.3 Keras池化层//38

3.4.4 Keras局连接层//39

3.4.5 Keras循环层//39

3.4.6 Keras嵌入层//39

3.4.7 Keras合并层//39

3.4.8 Keras高级激活层//40

3.4.9 Keras归一化层//40

3.4.10 Keras噪声层//40

3.5 将网络层添加到Keras模型中//40

3.5.1 利用序列化API将网络层添加到Keras模型中//40

3.5.2 利用功能性API将网络层添加到Keras模型中//41

3.6 编译Keras模型//41

3.7 训练Keras模型//42

3.8 使用Keras模型进行预测//42

3.9 Keras中的其他模块//43

3.10 基于MNIST数据集的Keras顺序模型示例//43

3.11 总结//45

第4章 基于TensorFlow的经典机器学习算法//47

4.1 简单的线性回归//48

4.1.1 数据准备//49

4.1.2 建立简单的回归模型//50

4.1.3 使用训练好的模型进行预测//55

4.2 多元回归//55

4.3 正则化回归//58

4.3.1 Lasso正则化//59

4.3.2 岭正则化//62

4.3.3 弹性网正则化//64

4.4 使用Logistic回归进行分类//65

4.4.1 二分类的Logistic回归//65

4.4.2 多类分类的Logistic回归//66

4.5 二分类//66

4.6 多分类//69

4.7 总结//73

第5章 基于TensorFlow和Keras的神经网络和多层感知机//74

5.1 感知机//74

5.2 多层感知机//76

5.3 用于图像分类的多层感知机//77

5.3.1 通过TensorFlow构建用于MNIST分类的多层感知机//77

5.3.2 通过Keras构建用于MNIST分类的多层感知机//83

5.3.3 通过TFLearn构建用于MNIST分类的多层感知机//85

5.3.4 多层感知机与TensorFlow、Keras和TFLearn的总结//86

5.4 用于时间序列回归的多层感知机//86

5.5 总结//89

第6章 基于TensorFlow和Keras的RNN//90

6.1 简单RNN//90

6.2 RNN改进版本//92

6.3 LSTM网络//93

6.4 GRU网络//95

6.5 基于TensorFlow的RNN//96

6.5.1 TensorFlow的RNN单元类//96

6.5.2 TensorFlow的RNN模型构造类//97

6.5.3 TensorFlow的RNN单元封装类//97

6.6 基于Keras的RNN//98

6.7 RNN的应用领域//98

6.8 将基于Keras的RNN用于MNIST数据//99

6.9 总结//100

第7章 基于TensorFlow和Keras的RNN在时间序列数据中的应用//101

7.1 航空公司乘客数据集//101

7.1.1 加载airpass数据集//102

7.1.2 可视化airpass数据集//102

7.2 使用TensorFlow为RNN模型预处理数据集//103

7.3 TensorFlow中的简单RNN//104

7.4 TensorFlow中的LSTM网络//106

7.5 TensorFlow中的GRU网络//107

7.6 使用Keras为RNN模型预处理数据集//108

7.7 基于Keras的简单RNN//109

7.8 基于Keras的LSTM网络//111

7.9 基于Keras的GRU网络//112

7.10 总结//113

第8章 基于TensorFlow和Keras的RNN在文本数据中的应用//114

8.1 词向量表示//114

8.2 为word2vec模型准备数据//116

8.2.1 加载和准备PTB数据集//117

8.2.2 加载和准备text8数据集//118

8.2.3 准备小的验证集//119

8.3 使用TensorFlow的skip-gram模型//119

8.4 使用t-SNE可视化单词嵌入//124

8.5 基于Keras的skip-gram模型//126

8.6 使用TensorFlow和Keras中的RNN模型生成文本//130

8.6.1 使用TensorFlow中的LSTM模型生成文本//131

8.6.2 使用Keras中的LSTM模型生成文本//134

8.7 总结//137

第9章 基于TensorFlow和Keras的CNN//138

9.1 理解卷积//138

9.2 理解池化//141

9.3 CNN架构模式-LeNet//142

9.4 在MNIST数据集上构建LeNet//143

9.4.1 使用TensorFlow的LeNetCNN对MNIST数据集进行分类//143

9.4.2 使用Keras的LeNetCNN对MNIST数据集进行分类//146

9.5 在CIFAR10数据集上构建LeNet//148

9.5.1 使用TensorFlow的CNN对CIFAR10数据集进行分类//149

9.5.2 使用Keras的CNN对CIFAR10数据集进行分类//150

9.6 总结//151

第10章 基于TensorFlow和Keras的自编码器//152

10.1 自编码器类型//152

10.2 基于TensorFlow的堆叠自编码器//154

10.3 基于Keras的堆叠自编码器//157

10.4 基于TensorFlow的去噪自编码器//159

10.5 基于Keras的去噪自编码器//161

10.6 基于TensorFlow的变分自编码器//162

10.7 基于Keras的变分自编码器//167

10.8 总结//170

第11章 使用TF服务提供生成环境下的TensorFlow模型//171

11.1 在TensorFlow中保存和恢复模型//171

11.1.1 使用saver类保存和恢复所有网络计算图变量//172

11.1.2 使用saver类保存和恢复所选变量//173

11.2 保存和恢复Keras模型//175

11.3 TensorFlow服务//175

11.3.1 安装TF服务//175

11.3.2 保存TF服务的模型//176

11.3.3 使用TF服务提供服务模型//180

11.4 在Docker容器中提供TF服务//181

11.4.1 安装Docker//182

11.4.2 为TF服务构建Docker镜像//183

11.4.3 在Docker容器中提供模型//185

11.5 基于Kubernetes的TF服务//186

11.5.1 安装Kubernetes//186

11.5.2 将Docker镜像上传到dockerhub//187

11.5.3 在Kubernetes中部署//188

11.6 总结//192

第12章 迁移学习模型和预训练模型//193

12.1 ImageNet数据集//193

12.2 重新训练或微调模型//196

12.3 COCO动物数据集和预处理图像//197

12.4 TensorFlow中的VGG16//203

12.4.1 使用TensorFlow中预先训练的VGG16进行图像分类//204

12.5 将TensorFlow中的图像预处理用于预先训练的VGG16//208

12.5.1 使用TensorFlow中重新训练的VGG16进行图像分类//209

12.6 Keras中的VGG16//215

12.6.1 使用Keras中预先训练的VGG16进行图像分类//215

12.6.2 使用Keras中重新训练的VGG16进行图像分类//220

12.7 TensorFlow中的Inceptionv3//226

12.7.1 使用TensorFlow中Inceptionv3进行图像分类//226

12.7.2 使用TensorFlow中重新训练的Inceptionv3进行图像分类//231

12.8 总结//237

第13章 深度强化学习//238

13.1 OpenAIGym101//239

13.2 将简单的策略应用于cartpole游戏//242

13.3 强化学习101//246

13.3.1 Q函数(在模型无效时学习优化)//246

13.3.2 强化学习算法的探索与开发//246

13.3.3 V函数(在模型可用时学习优化)//247

13.3.4 强化学习技巧//247

13.4 强化学习的朴素神经网络策略//248

13.5 实施Q-Learning//250

13.5.1 Q-Learning的初始化和离散化 //251

13.5.2 基于Q表的Q-Learning//252

13.5.3 使用Q网络或深度Q网络(DQN)进行Q-Learning//253

13.6 总结//254

第14章 生成对抗网络(GAN)//256

14.1 GAN101//256

14.2 建立和训练GAN的最佳实践//258

14.3 基于TensorFlow的简单GAN//258

14.4 基于Keras的简单GAN//263

14.5 基于TensorFlow和Keras的深度卷积GAN//268

14.6 总结//270

第15章 基于TensorFlow集群的分布式模型//271

15.1 分布式执行策略//271

15.2 TensorFlow集群//272

15.2.1 定义集群规范//274

15.2.2 创建服务器实例//274

15.2.3 定义服务器和设备之间的参数和操作//276

15.2.4 定义并训练计算图以进行异步更新//276

15.2.5 定义并训练计算图以进行同步更新//281

15.3 总结//282

第16章 移动和嵌入式平台上的TensorFlow模型//283

16.1 移动平台上的TensorFlow//283

16.2 Android应用程序中的TFMobile//284

16.3 演示Android上的TFMobile//285

16.4 iOS应用程序中的TFMobile//287

16.5 演示iOS上的TFMobile//288

16.6 TensorFlowLite//289

16.7 演示Android上的TFLite应用程序//290

16.8 演示iOS上的TFLite应用程序//291

16.9 总结//291

第17章 R中的TensorFlow和Keras//292

17.1 在R中安装TensorFlow和Keras软件包//292

17.2 R中的TF核心API//294

17.3 R中的TFEstimatorAPI//295

17.4 R中的KerasAPI//297

17.5 R中的TensorBoard//300

17.6 R中的tfruns包//302

17.7 总结//304

第18章 调试TensorFlow模型//305

18.1 使用tf.Session.run()获取张量值//305

18.2 使用tf.Print()输出张量值//306

18.3 使用tf.Assert()断言条件//306

18.4 使用TensorFlow调试器(tfdbg)进行调试//308

18.5 总结//310

附录 张量处理单元//311

前言/序言

原书前言

Google公司的TensorFlow已经成为开发人员在应用程序中引入智能处理技术的主要开发工具。与此同时,TensorFlow已经成为每个组织的主要研究工具和工程工具。因此,需要进一步学习TensorFlow的高级用例,这些用例可以在各种软件和设备上构建智能系统。TensorFlow凭借迅速的迭代更新以及代码调试,可将智能理念带入到项目中。因此,精通TensorFlow是创造先进的机器学习、深度学习应用的必由之路。《精通TensorFlow》一书将帮您学习TensorFlow的所有高级功能。为了使读者学习进入人工智能世界所需的专业知识,《精通TensorFlow》汇集了关键信息,因此《精通TensorFlow》可拓展中级TensorFlow用户的知识面,使其达到更高水平。《精通TensorFlow》涵盖了从实现先进计算到接近现实世界的研究领域。有了这个非常全面的指南,可以让读者在开发者社区中充分施展才能,也为读者提供了一个为研究工作或项目做出贡献的平台。
精通TensorFlow》读者对象
《精通TensorFlow》适用于任何想要用TensorFlow解决深度学习问题的人员,也适用于那些正在寻找易于理解的技术指南,想深入学习复杂使用案例的技术人员。要想充分利用《精通TensorFlow》,需要对TensorFlow和Python有基本的了解。
精通TensorFlow》涵盖的内容
第1章,TensorFlow101。本章介绍了TensorFlow的基础知识,例如如何创建张量、常量、变量、占位符和相关操作;了解计算图以及如何将计算图节点放置在各种设备(如GPU)上。通过本章,还可以学习如何使用TensorBoard来可视化各种中间结果和最终的输出值。
第2章,TensorFlow的高级库。本章介绍了几个高级库,包括TFContribLearn、TFSlim、TFLearn、Sonnet和PrettyTensor等。
第3章,Keras101。本章详细介绍了高级库Keras,这是TensorFlow核心之一。
第4章,基于TensorFlow的经典机器学习算法。本章介绍如何使用TensorFlow来实现经典的机器学习算法,如线性回归和逻辑回归分类。
第5章,基于TensorFlow和Keras的神经网络和多层感知机。本章介绍了神经网络的概念,并介绍如何构建简单的神经网络模型,还介绍了如何构建多层感知机(MLP)。
第6章,基于TensorFlow和Keras的RNN。本章介绍如何用TensorFlow和Keras构建RNN。这里将介绍RNN、长短期记忆(LSTM)网络和门控循环单元(GRU)网络的内部结构。本章还会简要介绍在TensorFlow和Keras中用于实现RNN模型的API函数和类。
第7章,基于TensorFlow和Keras的RNN在时间序列数据中的应用。本章介绍了如何构建和训练基于时间序列数据的RNN模型,并提供相应的示例。
第8章,基于TensorFlow和Keras的RNN在文本数据中的应用。本章介绍如何构建和训练基于文本数据的RNN模型,并给出相应的示例。这一章会学习使用TensorFlow和Keras来构建词向量,然后通过基于词向量嵌入的LSTM模型从示例文本数据中生成文本。
第9章,基于TensorFlow和Keras的CNN。本章介绍用于处理图像数据的CNN模型,并给出基于TensorFlow和Keras库的示例,该示例实现了LeNet架构模式。
第10章,基于TensorFlow和Keras的自编码器。本章介绍了用于处理图像数据的自编码模型,并给出基于TensorFlow和Keras库的示例,同时也给出了简单自编码器、去噪自编码器和变分自编码器的实现。
第11章,使用TF服务提供生成环境下的TensorFlow模型。本章会介绍如何用TensorFlow服务来部署模型,学习如何在Docker容器和Kubernetes集群中使用TF服务进行部署。
第12章,迁移学习模型和预训练模型。本章会介绍如何用预训练模型来进行预测,学习如何在不同的数据集上重新训练模型。本章提供基于VGG16和InceptionV3模型的示例,这些模型预先在ImageNet数据集上训练好,并用来预测COCO数据集中的图像;也会介绍一个示例,它通过使用COCO数据集重新训练模型的最后一层来改进预测效果。
第13章,深度强化学习。本章会介绍强化学习和OpenAIgym框架。也会介绍如何使用各种强化学习策略(包括深度Q网络)来构建和训练多个模型。
第14章,生成对抗网络(GAN)。本章介绍如何通过TensorFlow和Keras来构建和训练生成对抗模型。
第15章,基于TensorFlow集群的分布式模型。本章将介绍如何基于TensorFlow集群来训练TensorFlow模型,这是一种分布式训练方法。本章还会通过示例介绍以数据并行方式训练模型时的异步和同步更新方法。
第16章,移动和嵌入式平台上的TensorFlow模型。本章会介绍如何在基于iOS和Android平台的移动设备上部署TensorFlow模型。本章涵盖了基于TensorFlow库的TFMobile和TFLiteAPI。
第17章,R中的TensorFlow和Keras。本章介绍了如何在R统计软件中构建和训练TensorFlow模型,还介绍RStudio用于实现TFCore,TFEstimators和KerasAPI的三个软件包。
第18章,调试TensorFlow模型。本章会介绍当模型无法按预期工作时,如何发现热点问题的策略和技巧。本章涵盖了TensorFlow调试器和其他调试方法。

译者序

随着人工智能的兴起,深度学习成为人们关注的焦点,也成为机器学习的重要分支。通常所说的深度学习模型是指多层神经网络,它的特点是结构复杂,构建比较困难,训练效率低。

TensorFlow是Google公司于2015年11月发布的一款深度学习开源框架。它是目前最流行的深度学习框架和机器学习框架。TensorFlow支持主流的桌面操作系统平台(比如Linux、Windows等),也支持主流的嵌入式操作系统(iOS和Android),它能有效利用嵌入式设备、台式机、服务器、集群中的CPU和GPU资源来高效地计算。人们可用Python、C++等多种语言对其进行开发。TensorFlow不仅提供了非常丰富的深度学习API,也提供各个矩阵计算方法、最优化算法、可视化工具和调试环境。TensorFlow还有非常完善的帮助文档。目前在计算机视觉、自然语言处理、推荐系统等领域广泛使用TensorFlow作为基础开发平台。

《精通TensorFlow》用18章来介绍怎样使用TensorFlow框架。从TensorFlow的基本编程入手,介绍了与之相关的核心组件、高级库、计算图和用于查看程序执行过程的TensorBoard。《精通TensorFlow》也对如何使用Keras创建和训练神经网络模型进行了详细介绍。TensorFlow可用来实现经典的机器学习模型,因此《精通TensorFlow》用1章来介绍如何用TensorFlow实现线性回归、分类等经典机器学习模型。用TensorFlow实现深度学习模型会非常方便,这些内容是《精通TensorFlow》的重点,《精通TensorFlow》会重点介绍多层感知机(MLP)、循环神经网络(RNN)、卷积神经网络(CNN)、自编码器、深度强化学习、生成对抗网络(GAN)的实现;会通过具体的应用来介绍这些深度学习模型的原理。除了介绍深度学习模型以外,《精通TensorFlow》还会介绍与训练模型相关的技术,比如迁移学习、分布式训练方法、模型的调试和在生产环境中部署深度学习模型的方法。总之,《精通TensorFlow》全面涵盖了TensorFlow的重要内容,通过对《精通TensorFlow》的学习,可以掌握TensorFlow的编程技巧,可提高工程实战能力,能深入理解各种深度学习模型的基本原理。

《精通TensorFlow》主要由重庆工商大学人工智能学院刘波博士翻译;重庆工商大学人工智能学院何希平教授对《精通TensorFlow》的翻译工作进行了技术指导,并负责《精通TensorFlow》的技术审稿和部分内容的翻译。

翻译《精通TensorFlow》的过程也是译者不断学习的过程。为了保证专业词汇翻译的准确性,我们在翻译过程中查阅了大量相关资料。但由于时间和能力有限,书中内容难免出现差错。若有问题,读者可通过电子邮件liubo7971@163.com与我们联系,欢迎一起探讨,共同进步。

译者


其他推荐