TensorFlow:实战Google深度学习框架(第2版)
  • 推荐25
  • 收藏56
  • 浏览37.0K

TensorFlow:实战Google深度学习框架(第2版)

郑泽宇 (作者)  孙奇俏 (责任编辑)

  • 书  号:978-7-121-33066-7
  • 出版日期:2018-01-01
  • 页  数:364
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨
纸质版 ¥89.00
TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。本书为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经验,是走进这个前沿、热门的人工智能领域的优选参考书。
第2版将书中所有示例代码从TensorFlow 0.9.0升级到了TensorFlow 1.4.0。在升级API的同时,第2版也补充了更多只有TensorFlow 1.4.0才支持的功能。另外,第2版还新增两章分别介绍TensorFlow高层封装和深度学习在自然语言领域应用的内容。
本书适用于想要使用深度学习或TensorFlow的数据科学家、工程师,希望了解深度学习的大数据平台工程师,对人工智能、深度学习感兴趣的计算机相关从业人员及在校学生等。
领域旗舰重磅升级 新老谷歌专家联袂 首度全面支持1.4.x代码 大量增补新版独有核心功能|专题
郑泽宇,2011年获北京大学计算机学士学位,2013年获卡内基梅隆大学计算机硕士学位,前谷歌高级工程师,现为才云科技(Caicloud.io)联合创始人、首席大数据科学家。针对分布式TensorFlow上手难、管理难、监控难、上线难等问题,带领团队成功开发国内首个成熟的分布式TensorFlow深度学习平台,在机器学习、人工智能领域有着丰富的经验。

梁博文,谷歌工程师。2011年获北京大学计算机学士学位,2013年获哥伦比亚大学计算机硕士学位,同年加入谷歌翻译组,参与并领导了多个项目,负责了3个语言的翻译模型的研发工作,在自然语言处理方面有丰富经验,在统计翻译模型、神经网络翻译模型、语料数据清洗等方面均有深入研究。
“深度学习”这个词在过去的一年之中已经轰炸了媒体、技术博客甚至朋友圈。这也许正是你会读到本书的原因之一。数十年来,人工智能技术虽不断发展,但像深度学习这样在学术界和工业界皆具颠覆性的技术实在是十年难遇。可惜的是,理解和灵活运用深度学习并不容易,尤其是其复杂的数学模型,让不少感兴趣的同学很快“从入门到放弃”。在本书第1版前,很难找到从实战出发的深度学习和TensorFlow参考书,这也是笔者在工作之余熬夜撰写这本书的动力。笔者本人作为一枚标准码农、创业党,希望这本书能够帮助码农和准码农们绕过深度学习复杂的数据公式,快速上手深度学习,解决工作、学习中的实际问题。
2016年初,笔者和小伙伴们从美国谷歌辞职,回到祖国并在杭州联合创办了才云科技(Caicloud.io),为企业提供人工智能平台和解决方案。回国之初,很多企业对于TensorFlow都显示出了浓厚的兴趣,然而在深度交流之后,发现TensorFlow虽然是一款非常容易上手的工具,但是深度学习的技术并不是每一家企业都能掌握的。为了让更多的人和企业可以享受到深度学习技术带来的福利,笔者与电子工业出版社的张春雨编辑一拍即合,开始了本书的撰写工作。
使用TensorFlow实现深度学习是本书介绍的重点。本书将从TensorFlow的安装开始,依次介绍TensorFlow的基本概念、使用TensorFlow实现全连接深层神经网络、卷积神经网络和循环神经网络等深度学习算法,以及TensorFlow并行化输入数据处理流程、TensorBoard可视化工具、TensorFlow高层封装、带GPU的分布式TensorFlow使用方法。在介绍使用TensorFlow实现不同深度学习算法的同时,也介绍了这些算法背后的理论,并列举了这些算法可以解决的具体问题。本书避开了枯燥复杂的数学公式,从实际问题出发,在实践中介绍深度学习的概念和TensorFlow的用法。
本书第1版出版之后,笔者收到了广大读者的踊跃来信。信中既充分肯定了第1版对他们学习TensorFlow和深度学习的帮助,又提出了对更新TensorFlow版本和其他新内容的期待,这正是笔者开始撰写第2版的强大动力。第1版中大部分示例都是与计算机视觉相关的,为了更好地介绍与自然语言处理相关的内容,笔者特别邀请了在Google翻译组工作了5年的梁博文来撰写这部分内容。第2版中将有专门的一个章节介绍语言模型、Seq2Seq模型、注意力(attention)模型等自然语言应用。
TensorFlow是一个飞速发展的工具。第1版在写作时的最新版本为0.9.0,然而到第1版出版时,谷歌已经推出了TensorFlow的第一个正式版1.0.0。相比第1版中使用的TensorFlow 0.9.0,TensorFlow 1.0.0以后的版本对API也进行了大量调整,之前的大量示例代码已经无法正常运行。第2版在更新示例API版本的同时,对TensorFlow 0.9.0之后推出的重要新功能也进行了详细介绍,希望能够帮助读者更好地使用TensorFlow。
为了让广大读者更好地理解和使用书中的示例代码,我们为大家提供了一个完全公开的GitHub代码库来维护TensorFlow不同版本的示例程序。该代码库的网址为https://github.com/caicloud/tensorflow-tutorial。笔者衷心地希望各位读者能够从本书中获益,这也是对我们最大的支持和鼓励。对于书中出现的任何错误或者不准确的地方,欢迎大家批评指正,并发送邮件至zeyu@caicloud.io。
读者也可以登录博文视点官网http://www.broadview.com.cn,下载本书代码或提交勘误信息。一旦勘误信息被作者或编辑确认,即可获得博文视点奖励积分,用于兑换电子书。读者可以随时浏览图书页面,查看已发布的勘误信息。
致谢
在此我要特别感谢为此书做出贡献的每一个人。
首先,我要感谢所有的读者。在第1版出版之后,我收到了大量的读者来信。这些信中表达了对本书内容的喜爱,同时也给出了非常多的宝贵建议。广大读者的支持和鼓励正是我完成第2版的最大动力。在此,我再次感谢每一位读者,希望第2版中更多的干货值得大家投入宝贵的精力去阅读。
其次,我要感谢加入第2版写作的作者梁博文。在繁重的Google日常工作的同时,梁博文经常深夜撰写自然语言处理的相关内容并调试示例代码,非常辛苦。正是因为梁博文的辛勤付出,才让第2版中的内容更加全面。
最后,我要再次感谢在第1版写作过程中给予过我大力支持的所有人。没有他们的支持也就没有这本书的诞生——
在紧张的创业之余,才云科技CEO张鑫给了我极大的支持和鼓励,让我有足够的时间投入到此书第1版的撰写工作中。
我也要感谢我的妻子温苗苗以及我的父母、岳父岳母,没有他们一直以来的支持和帮助,我不可能完成此书的写作。每当遇到困难的时候,长辈们的鼓励是我前进的最大动力。
最后,我还要感谢所有为本书付出心血的电子工业出版社的编辑们。无论在本书的定位,还是在具体的文字推敲、编辑加工、版式设计上,张春雨、刘佳禾和孙奇俏都给予了巨大的帮助。
——郑泽宇
2017年12月

目录

第1章 深度学习简介 1
1.1 人工智能、机器学习与深度学习 2
1.2 深度学习的发展历程 6
1.3 深度学习的应用 10
1.3.1 计算机视觉 10
1.3.2 语音识别 13
1.3.3 自然语言处理 14
1.3.4 人机博弈 17
1.4 深度学习工具介绍和对比 19
小结 23
第2章 TensorFlow环境搭建 25
2.1 TensorFlow的主要依赖包 25
2.1.1 Protocol Buffer 25
2.1.2 Bazel 27
2.2 TensorFlow安装 29
2.2.1 使用Docker安装 30
2.2.2 使用pip安装 31
2.2.3 从源代码编译安装 32
2.3 TensorFlow测试样例 37
小结 38
第3章 TensorFlow入门 39
3.1 TensorFlow计算模型——计算图 39
3.1.1 计算图的概念 39
3.1.2 计算图的使用 40
3.2 TensorFlow数据模型——张量 42
3.2.1 张量的概念 42
3.2.2 张量的使用 44
3.3 TensorFlow运行模型——会话 45
3.4 TensorFlow实现神经网络 47
3.4.1 TensorFlow游乐场及神经网络简介 47
3.4.2 前向传播算法简介 50
3.4.3 神经网络参数与TensorFlow变量 54
3.4.4 通过TensorFlow训练神经网络模型 58
3.4.5 完整神经网络样例程序 62
小结 64
第4章 深层神经网络 66
4.1 深度学习与深层神经网络 66
4.1.1 线性模型的局限性 67
4.1.2 激活函数实现去线性化 70
4.1.3 多层网络解决异或运算 73
4.2 损失函数定义 74
4.2.1 经典损失函数 75
4.2.2 自定义损失函数 79
4.3 神经网络优化算法 81
4.4 神经网络进一步优化 85
4.4.1 学习率的设置 85
4.4.2 过拟合问题 87
4.4.3 滑动平均模型 91
小结 92
第5章 MNIST数字识别问题 94
5.1 MNIST数据处理 94
5.2 神经网络模型训练及不同模型结果对比 97
5.2.1 TensorFlow训练神经网络 97
5.2.2 使用验证数据集判断模型效果 102
5.2.3 不同模型效果比较 103
5.3 变量管理 107
5.4 TensorFlow模型持久化 112
5.4.1 持久化代码实现 112
5.4.2 持久化原理及数据格式 117
5.5 TensorFlow最佳实践样例程序 126
小结 132
第6章 图像识别与卷积神经网络 134
6.1 图像识别问题简介及经典数据集 135
6.2 卷积神经网络简介 139
6.3 卷积神经网络常用结构 142
6.3.1 卷积层 142
6.3.2 池化层 147
6.4 经典卷积网络模型 149
6.4.1 LeNet-5模型 150
6.4.2 Inception-v3模型 156
6.5 卷积神经网络迁移学习 160
6.5.1 迁移学习介绍 160
6.5.2 TensorFlow实现迁移学习 161
小结 168
第7章 图像数据处理 170
7.1 TFRecord输入数据格式 170
7.1.1 TFRecord格式介绍 171
7.1.2 TFRecord样例程序 171
7.2 图像数据处理 173
7.2.1 TensorFlow图像处理函数 174
7.2.2 图像预处理完整样例 183
7.3 多线程输入数据处理框架 185
7.3.1 队列与多线程 186
7.3.2 输入文件队列 190
7.3.3 组合训练数据(batching) 193
7.3.4 输入数据处理框架 196
7.4 数据集(Dataset) 199
7.4.1 数据集的基本使用方法 199
7.4.2 数据集的高层操作 202
小结 207
第8章 循环神经网络 208
8.1 循环神经网络简介 208
8.2 长短时记忆网络(LSTM)结构 214
8.3 循环神经网络的变种 218
8.3.1 双向循环神经网络和深层循环神经网络 218
8.3.2 循环神经网络的dropout 221
8.4 循环神经网络样例应用 222
小结 226
第9章 自然语言处理 227
9.1 语言模型的背景知识 227
9.1.1 语言模型简介 227
9.1.2 语言模型的评价方法 229
9.2 神经语言模型 232
9.2.1 PTB数据集的预处理 233
9.2.2 PTB数据的batching方法 236
9.2.3 基于循环神经网络的神经语言模型 238
9.3 神经网络机器翻译 244
9.3.1 机器翻译背景与Seq2Seq模型介绍 245
9.3.2 机器翻译文本数据的预处理 246
9.3.3 Seq2Seq模型的代码实现 250
9.3.4 注意力机制 257
小结 261
第10章 TensorFlow高层封装 262
10.1 TensorFlow高层封装总览 262
10.2 Keras介绍 267
10.2.1 Keras基本用法 267
10.2.2 Keras高级用法 272
10.3 Estimator介绍 277
10.3.1 Estimator基本用法 278
10.3.2 Estimator自定义模型 280
10.3.3 使用数据集(Dataset)作为Estimator输入 284
小结 286
第11章 TensorBoard可视化 287
11.1 TensorBoard简介 287
11.2 TensorFlow计算图可视化 289
11.2.1 命名空间与TensorBoard图上节点 290
11.2.2 节点信息 297
11.3 监控指标可视化 301
11.4 高维向量可视化 309
小结 317
第12章 TensorFlow计算加速 318
12.1 TensorFlow使用GPU 318
12.2 深度学习训练并行模式 324
12.3 多GPU并行 327
12.4 分布式TensorFlow 334
12.4.1 分布式TensorFlow原理 334
12.4.2 分布式TensorFlow模型训练 338
小结 348

本书勘误

印次
  •  •  印次: 9

    第四章-3.正则化-代码
    Github源代码部分
    plt.scatter(data[:,0], data[:,1], c=label, cmap="RdBu", vmin=-.2, vmax=1.2, edgecolor="white")
    修改后
    plt.scatter(data[:,0], data[:,1], c=np.squeeze(label), cmap="RdBu", vmin=-.2, vmax=1.2, edgecolor="white")

    vvvv 提交于 2019/1/20 10:04:46
    孙奇俏 确认于 2019/2/20 16:08:44
  • 页码:8  •  行数:10  •  印次: 2

    作者您好,我是北航在读的研二学生,我叫周鹏,今天刚开始看这本书,下面是我对书中的一点疑问或者建议:
    在书中第8页,您举了个例子:设计一个系统来识别不同颜色不同型号的汽车,有两种方法:
    1.设计的模型中,每一个神经元代表着“颜色+型号”
    如果有N种类颜色,M种类型号,那么按照这种设计模式确实是NM的神经元
    2.设计的模型中,一部分神经元代表“颜色”,一部分神经元代表“型号”
    按照这种设计模式,确实是M+N个神经元
    但是您接下来用这个例子引入了“让神经网络及宽度的方向从宽度走向了深度”,我觉得不妥。
    原因如下:
    1.不管是M
    N个神经元作为设计模型1的输入层,还是M+N个神经元作为设计模式2的输入层,都只是神经网络输入层表示的方式不同,如果我们默认第一个隐藏层神经元的个数是200个,那么按照设计模型1,我们可以得到第一层的权重W1的大小为(MN,200),同理,按照设计模型2,我们可以得到第一层的权重W1的大小为(M+N,200),所以设计模型2的参数个数为{(M+N)200+200}个,设计模型1的参数个数为{(MN)200+200},我们可以得到当M和N满足一个不等式{(1/N + 1/M)<1 }的时候,我们总是能得到模型2的参数个数是小于模型1的。
    2.我猜测您的意思应该是想从全连接神经网络引入卷积神经网络,但是有瑕疵,神经网络并不像卷积神经网络一样每一层都有一个提取不同特征的功能,而是偏向于拟合。
    3.您举的这个例子可以从 我上面的原因分析来导出一个结果:全连接神经网络的参数太大,所以我们需要用卷积神经网络,卷积神经网络可以从输入的数据中分特征提取,每一个特征放在“深度”的一层。
    如果是我理解错误的话,还希望作者您可以把您写这段话的思路跟我解释一下,谢谢您。18811746117@163.com

    小董不吃蒜 提交于 2019/7/31 5:01:57
    孙奇俏 确认于 2019/11/8 9:29:00
  • 页码:22  •  行数:图1-11(a)  •  印次: 2

    图中右下角,有“绘图区”字样,应该去掉。

    callofdutyops 提交于 2018/6/2 0:48:33
    孙奇俏 确认于 2018/8/22 9:30:52
  • 页码:41  •  行数:12  •  印次: 1
    v = tf.get_variable("v", initializer=tf.zeros_initializer(shape=[1]))
    应该为
    v = tf.get_variable("v", initializer=tf.zeros_initializer, shape=[1])
    
    duanfire 提交于 2018/3/22 20:25:36
    孙奇俏 确认于 2018/3/27 13:02:46
  • 页码:43  •  行数:5  •  印次: 1

    而且一个张量的结构 且 改为 是

    wjm 提交于 2018/3/14 18:23:29
    孙奇俏 确认于 2018/3/16 9:09:18

读者评论

  • 第六章迁移学习中,数据经过处理通过numpy格式保存,可是我运行第一部分代码的时候却没有生成.npy文件

    老八发表于 2021/7/13 9:08:16
  • 您好,配套的代码下载了好多次都下载不了,github上也是,能否给出其他下载方式呢?或者可以发我邮箱一份吗谢谢。vx867249759vx@qq.com

    M发表于 2021/3/31 14:54:06
  • 您好,8.4节的循环神经网络的样例,就是预测sin x取值的那个例子,我照搬到电脑上,用的是py3.68和tf1.4.0的环境,可是输出的结果完全不一样,而且每次运行都不一样,也没有找到问题所在,所以希望能为我解惑,感激不尽。
    邮箱是wudr@ihep.ac.cn

    wudr发表于 2020/2/4 13:25:52
  • 孙奇俏老师,您好!使用第九章神经机器翻译模型和程序作了训练和测试,测试效果一般,如把输入换成”I am a teacher”,翻译结果是“我是个孩子”,输入换成“I am a student”,结果仍然是“我是个孩子”。请问,示例模型具体能在什么程度上提供翻译准确性。附:我是一名大学老师,使用本教材讲授相关课程。

    Bathsunny发表于 2019/12/8 9:57:50
  • 请问第六章迁移学习中复用inception-v3中有一行trainable_Variables = get_trainable_variables() 来获取需要训练的变量(书p166),但是随后的代码中并没有使用到trainable_Variables,请问这行代码的意义是什么呢?

    BuskerC发表于 2019/12/3 22:56:14
    • 请问迁移学习的第一部分代码您运行成功了吗

      老八发表于 2021/7/13 9:09:00

相关博文

  • 用GPU进行TensorFlow计算加速

    用GPU进行TensorFlow计算加速

    管理员账号 2018-03-01

    小编说:将深度学习应用到实际问题中,一个非常大的问题在于训练深度学习模型需要的计算量太大。为了加速训练过程,本文将介绍如何如何在TensorFlow中使用单个GPU进行计算加速,也将介绍生成TensorFlow会话(tf.Sessio...

    管理员账号 2018-03-01
    5225 0 3 1

相关图书

程序员的AI书:从代码开始

张力柯 潘晖 (作者)

随着AI技术的普及,如何快速理解、掌握并应用AI技术,成为绝大多数程序员亟需解决的问题。本书基于Keras框架并以代码实现为核心,详细解答程序员学习AI算法时的...

¥76.30

解析深度学习:卷积神经网络原理与视觉实践

魏秀参 (作者)

深度学习,特别是深度卷积神经网络是人工智能的重要分支领域,卷积神经 网络技术也被广泛应用于各种现实场景,在许多问题上都取得了超越人类智能的 结果。本书作为该...

¥49.00

自然语言处理理论与实战

白宁超 (作者)

自然语言处理是什么?谁需要学习自然语言处理?自然语言处理在哪些地方应用?相关问题一直困扰<br>着不少初学者。针对这一情况,作者结合教学经验和工程应用编写此书。...

¥79.00

深度学习之PyTorch实战计算机视觉

唐进民 (作者)

计算机视觉、自然语言处理和语音识别是目前深度学习领域很热门的三大应用方向,本书旨在帮助零基础或基础较为薄弱的读者入门深度学习,达到能够独立使用深度学习知识处理计...

¥49.00

21个项目玩转深度学习——基于TensorFlow的实践详解

何之源 (作者)

《21个项目玩转深度学习——基于TensorFlow的实践详解》以实践为导向,深入介绍了深度学习技术和TensorFlow框架编程内容。 通过本书,读者可以训...

¥59.00

深度学习:一起玩转TensorLayer

董豪 郭毅可 杨光 (作者)

本书由TensorLayer创始人领衔,TensorLayer主要开发团队倾力打造而成。内容不仅覆盖了人工神经网络的基本知识,如多层感知器、卷积网络、递归网络及...

¥69.00