21个项目玩转深度学习——基于TensorFlow的实践详解
  • 推荐7
  • 收藏20
  • 浏览12.5K

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

何之源 (作者)  孙学瑛 (责任编辑)

  • 书  号:978-7-121-33571-6
  • 出版日期:2018-03-01
  • 页  数:357
  • 开  本:16(170*230)
  • 出版状态:图书立项
  • 维护人:宋亚东
纸质版 ¥79.00

相关图书

自然语言处理理论与实战

白宁超 (作者)

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

¥79.00

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

唐进民 (作者)

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

¥79.00

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

郑泽宇 (作者)

TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。本书为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手Tens...

¥89.00

深度学习:一起玩转TensorLayer

董豪 郭毅可 杨光 (作者)

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

¥99.00

深度学习轻松学:核心算法与视觉实践

冯超 (作者)

《深度学习轻松学:核心算法与视觉实践》介绍了深度学习基本算法和视觉领域的应用实例。书中以轻松直白的语言,生动详细地介绍了深层模型相关的基础知识,并深入剖析了算法...

¥79.00

深度学习原理与TensorFlow实践

喻俨 莫瑜 王琛 胡振邦 高杰 (作者)

《深度学习原理与TensorFlow实践》主要介绍了深度学习的基础原理和TensorFlow系统基本使用方法。TensorFlow是目前机器学习、深度学习领域最...

¥79.00
《21个项目玩转深度学习——基于TensorFlow的实践详解》以实践为导向,深入介绍了深度学习技术和TensorFlow框架编程内容。
通过本书,读者可以训练自己的图像识别模型、进行目标检测和人脸识别、完成一个风格迁移应用,还可以使用神经网络生成图像和文本,进行时间序列预测、搭建机器翻译引擎,训练机器玩游戏。全书共包含21个项目,分为深度卷积网络、RNN网络、深度强化学习三部分。读者可以在自己动手实践的过程中找到学习的乐趣,了解算法和编程框架的细节,让学习深度学习算法和TensorFlow的过程变得轻松和高效。本书代码基于TensorFlow 1.4及以上版本,并介绍了TensorFlow中的一些新特性。
本书适合有一定机器学习基础的学生、研究者或从业者阅读,尤其是希望深入研究TensorFlow和深度学习算法的数据工程师,也适合对人工智能、深度学习感兴趣的在校学生,以及希望进入大数据应用的研究者。
零基础入门,有趣新颖,实用有效
学习TensorFlow不再枯燥,21个项目让你快速上手!
何之源,现为复旦大学人工智能方向在读硕士生。针对Tensorflow早期学习案例不足的情况,在知乎等网站上发表了多篇实践文章,获得了广大读者的肯定。何之源于2012年通过信息学竞赛保送进入复旦大学学习,2016获得复旦大学理学学士学位,并荣获复旦大学优秀学生的称号。同年进入复旦大学计算机学院攻读硕士学位。在编程和机器学习领域有多年一线实践经验。
前 言
我们正处在一个日新月异、飞速变革的时代,层出不穷的新技术每天都在冲击和改变我们的生活。人工智能无疑是其中最受关注、也是影响最深远的技术领域。它为计算机插上了翅膀,演变出许多从前根本无法想象的新技术、新应用。AlphaGo Zero,一台没有任何先验知识的人工智能机器,可以在几天内通过自我博弈成长为世界第一的围棋大师,超越人类几千年积累的经验;风格迁移应用能够自动将用户的照片转变为著名的绘画艺术风格;机器可以在零点几秒内完成翻译,把一种语言译成另一种语言。此外,有关人脸识别、自动驾驶等新技术的应用也都纷纷开始落地。在过去的几年内,人工智能技术不仅在学术上取得了巨大的突破,也开始走向寻常百姓家,真正为人们的生活提供便利。
本书主要为读者介绍这次人工智能浪潮最重要的组成部分——深度学习技术,使用的编程框架是谷歌的TensorFlow。借助于谷歌巨大的影响力,TensorFlow一经发布就引起了广泛的关注,目前(截止至2017年底)TensorFlow在Github上已经有了8万4千多个Star,是所有深度学习框架中最多的。
鉴于目前市场上已有很多深度学习和TensorFlow的入门书籍,下面我们着重谈一谈本书与它们的不同之处,主要有以下几点:
 实践、应用导向。深度学习需要深厚的数理基础,对于初学者来说不是很友好。本书希望从实践出发,用具体的例子来引导读者学习深度学习技术和TensorFlow编程技巧。我们主要从实用性和趣味性两个方面考量,选择了21个实践项目,其中既有MNIST图像识别这样的入门项目,也有目标检测、人脸识别、时间序列预测这样的实用性项目,还有一些诸如Deep Dream这样的趣味性项目。读者可以在实践中找到乐趣,逐渐进步,让学习深度学习和TensorFlow的过程不再那么痛苦。
 清晰、有深度的介绍。在写书过程中,我们尽量用简单的语言来描述算法的原理,做到清晰有条理。此外,深度学习是一门还在快速发展的新技术,限于篇幅所限,很多内容不能完全写到书中,我们在大部分章节的末尾列出了拓展阅读材料,有兴趣的读者可以参考拓展材料进一步学习细节知识。
 基于TensorFlow 1.4版本。TensorFlow的发展非常迅速,本书代码全部基于TensorFlow 最新的1.4版本(包括1.4.0和1.4.1),并介绍了TensorFlow的一些新特性,如Time Series模块(1.3版本添加)、新的MultiRNNCell函数(1.2版本更改)等。本书的代码会在如下Github地址上提供,并会随新的TensorFlow版本的发布而同步更新:https://github.com/hzy46/Deep-Learning-21-Examples。
本书代码推荐的运行环境为:Ubuntu 14.04,Python 2.7、TensorFlow 1.4.0。请尽量使用类Unix系统和Python 2来运行本书的代码。
本书主要内容
本书共包括21章,内容编排如下:
第1到第11章主要介绍深度卷积神经相关的项目。其中,第1~3章属于入门章节,主要讨论深度学习中最基础的图像识别问题。第4~7章讨论了其他计算机视觉相关的实践案例,如目标识别、人脸识别、图像风格迁移等。最后,8~11章介绍了GAN模型和它的几个重要变体。
第12到第17章主要介绍RNN、LSTM相关的项目。RNN、LSTM通常用来处理序列型数据,这里第12章是一个入门章节,会详细介绍RNN和LSTM的原理、实现方法和一个应用实例——Char RNN。第13到17章讨论一些更复杂也更具体的案例,如序列分类、词嵌入表示、时间序列预测、机器翻译等。
第18到第21章主要介绍强化学习相关的项目。作为基础,第18、19章分别介绍了相对简单的Q Learning和SARSA算法,第20章和第21章介绍了更复杂的DQN和策略梯度算法。
如何阅读本书
在阅读此书前,读者应当了解Linux系统的基本操作,并会使用Python进行简单的编程,此外读者还需具备基础的机器学习知识。这本书章节的安排是依据读者对深度学习的了解循序渐进设立的,建议初学者从前至后阅读。由于深度学习和TensorFlow都不大易于理解,我建议读者分几遍阅读本书:
 第一遍先简单的浏览一下,看一看书中都有哪些实践项目。当对基本的概念有初步的理解时,就可以尝试配置一下开发环境。
 第二遍,从前至后,阅读各章中算法的原理,并运行相应的实践项目。在这个过程中,希望读者能在自己动手的过程中找到学习的乐趣。读者可以对照源代码和书中的内容,深入学习各个模型的细节,此外还可以根据自己的需求对代码进行修改。本书会涉及到大量TensorFlow中的函数,由于篇幅限制,不可能将每一个函数都介绍一遍,书中只会对比较重要的函数进行介绍,读者可以参考TensorFlow的官方文档,查看其他函数的功能说明。
 第三遍再根据需要对照源程序看相关章节。此外,读者还可以参阅章节最后的拓展阅读来作进一步学习。最后,如果你是一名深度学习和TensorFlow的精通者,也可以根据需要直接跳读到相关章节,查阅你需要的内容。
致谢
我首先要感谢我的父母,是他们将我养育成人,父母永远健康快乐是我最大的心愿。
感谢互联网时代,感谢网络上数不清的优秀开发者和博主,也感谢谷歌的开源精神,让我们可以如此紧跟时代最前沿的技术,并为技术的进步做出自己微薄的贡献。
我还要真诚地感谢电子工业出版社对这本书的认可和兴趣。感谢电子工业出版社的孙学瑛女士,她的热情推动最终促成了我与电子工业出版社的合作。感谢宋亚东编辑,他对本书的重视和诚恳的建议,在写作过程中给了我莫大的帮助。
最后,感谢刘婧源同学给本书提出的宝贵的意见。
由于本人水平有限,书中不足及错误之处在所难免,敬请专家和读者给予批评指正。如果您想和我进行技术交流,可以发送意见反馈邮件至hzydl21@163.com,亦可在知乎上找到我:https://www.zhihu.com/people/he-zhi-yuan-16/,此外还可以访问书友论坛http://forum.broadview.com.cn。
何之源
2018年1月1日

目录

前言
第1章 MNIST机器学习入门 1
1.1 MNIST数据集 2
1.1.1 简介 2
1.1.2 实验:将MNIST数据集保存为图片 5
1.1.3 图像标签的独热(one-hot)表示 6
1.2 利用TensorFlow识别MNIST 8
1.2.1 Softmax回归 8
1.2.2 两层卷积网络分类 14
1.3 总结 18
第2章 CIFAR-10与ImageNet图像识别 19
2.1 CIFAR-10数据集 20
2.1.1 CIFAR-10简介 20
2.1.2 下载CIFAR-10数据 21
2.1.3 TensorFlow的数据读取机制 23
2.1.4 实验:将CIFAR-10数据集保存为图片形式 30
2.2 利用TensorFlow训练CIFAR-10识别模型 34
2.2.1 数据增强(Data Augmentation) 34
2.2.2 CIFAR-10识别模型 36
2.2.3 训练模型 39
2.2.4 在TensorFlow中查看训练进度 39
2.2.5 测试模型效果 42
2.3 ImageNet图像识别模型 44
2.3.1 ImageNet数据集简介 44
2.3.2 历代ImageNet图像识别模型 45
2.4 总结 49
第3章 打造自己的图像识别模型 50
3.1 微调(Fine-tune)的原理 51
3.2 数据准备 52
3.3 使用TensorFlow Slim微调模型 56
3.3.1 下载TensorFlow Slim的源代码 56
3.3.2 定义新的datasets文件 57
3.3.3 准备训练文件夹 59
3.3.4 开始训练 60
3.3.5 训练程序行为 62
3.3.6 验证模型正确率 63
3.3.7 TensorBoard可视化与超参数选择 64
3.3.8 导出模型并对单张图片进行识别 65
3.4 总结 69
第4章 Deep Dream模型 70
4.1 Deep Dream的技术原理 71
4.2 TensorFlow中的Deep Dream模型实践 73
4.2.1 导入Inception模型 73
4.2.2 生成原始的Deep Dream图像 76
4.2.3 生成更大尺寸的Deep Dream图像 78
4.2.4 生成更高质量的Deep Dream图像 82
4.2.5 最终的Deep Dream模型 87
4.3 总结 90

第5章 深度学习中的目标检测 91
5.1 深度学习中目标检测的原理 92
5.1.1 R-CNN的原理 92
5.1.2 SPPNet的原理 94
5.1.3 Fast R-CNN的原理 97
5.1.4 Faster R-CNN的原理 98
5.2 TensorFlow Object Detection API 101
5.2.1 安装TensorFlow Object Detection API 101
5.2.2 执行已经训练好的模型 103
5.2.3 训练新的模型 109
5.2.4 导出模型并预测单张图片 113
5.3 总结 114
第6章 人脸检测和人脸识别 115
6.1 MTCNN的原理 116
6.2 使用深度卷积网络提取特征 121
6.2.1 三元组损失(Triplet Loss)的定义 123
6.2.2 中心损失(Center Loss)的定义 123
6.3 使用特征设计应用 125
6.4 在TensorFlow中实现人脸识别 126
6.4.1 项目环境设置 126
6.4.2 LFW人脸数据库 127
6.4.3 LFW数据库上的人脸检测和对齐 128
6.4.4 使用已有模型验证LFW数据库准确率 129
6.4.5 在自己的数据上使用已有模型 130
6.4.6 重新训练新模型 133
6.4.7 三元组损失和中心损失的定义 138
6.5 总结 140
第7章 图像风格迁移 141
7.1 图像风格迁移的原理 142
7.1.1 原始图像风格迁移的原理 142
7.1.2 快速图像风格迁移的原理 148
7.2 在TensorFlow中实现快速风格迁移 149
7.2.1 使用预训练模型 150
7.2.2 训练自己的模型 153
7.2.3 在TensorBoard中监控训练情况 154
7.2.4 项目实现细节 157
7.3 总结 162
第8章 GAN和DCGAN入门 163
8.1 GAN的原理 164
8.2 DCGAN的原理 166
8.3 在TensorFlow中用DCGAN生成图像 169
8.3.1 生成MNIST图像 170
8.3.2 使用自己的数据集训练 171
8.3.3 程序结构分析:如何将图像读入模型 173
8.3.4 程序结构分析:可视化方法 177
8.4 总结 180
第9章 pix2pix模型与自动上色技术 181
9.1 cGAN的原理 182
9.2 pix2pix模型的原理 184
9.3 TensorFlow中的pix2pix模型 187
9.3.1 执行已有的数据集 187
9.3.2 创建自己的数据集 191
9.4 使用TensorFlow为灰度图像自动上色 194
9.4.1 为食物图片上色 194
9.4.2 为动漫图片进行上色 196
9.5 总结 198
第10章 超分辨率:如何让图像变得更清晰 199
10.1 数据预处理与训练 200
10.1.1 去除错误图片 200
10.1.2 将图像裁剪到统一大小 202
10.1.3 为代码添加新的操作 202
10.2 总结 209
第11章 CycleGAN与非配对图像转换 210
11.1 CycleGAN的原理 211
11.2 在TensorFlow中用训练CycleGAN模型 213
11.2.1 下载数据集并训练 213
11.2.2 使用自己的数据进行训练 217
11.3 程序结构分析 220
11.4 总结 224
第12章 RNN基本结构与Char RNN文本生成 225
12.1 RNN的原理 226
12.1.1 经典RNN的结构 226
12.1.2 N VS 1 RNN的结构 229
12.1.3 1 VS N RNN的结构 230
12.2 LSTM的原理 231
12.3 Char RNN的原理 235
12.4 TensorFlow中的RNN实现方式 237
12.4.1 实现RNN的基本单元:RNNCell 238
12.4.2 对RNN进行堆叠:MultiRNNCell 239
12.4.3 注意点:BasicRNNCell和BasicLSTMCell的output 240
12.4.4 使用tf.nn.dynamic_rnn展开时间维度 241
12.5 使用TensorFlow实现Char RNN 242
12.5.1 定义输入数据 243
12.5.2 定义多层LSTM模型 244
12.5.3 定义损失 245
12.5.4 训练模型与生成文字 246
12.5.5 更多参数说明 250
12.5.6 运行自己的数据 250
12.6 总结 251
第13章 序列分类问题详解 252
13.1 N VS 1的RNN结构 253
13.2 数列分类问题与数据生成 254
13.3 在TensorFlow中定义RNN分类模型 258
13.3.1 定义模型前的准备工作 258
13.3.2 定义RNN分类模型 259
13.3.3 定义损失并进行训练 261
13.4 模型的推广 262
13.5 总结 263
第14章 词的向量表示:word2vec与词嵌入 264
14.1 为什么需要做词嵌入 265
14.2 词嵌入的原理 266
14.2.1 CBOW实现词嵌入的原理 266
14.2.2 Skip-Gram实现词嵌入的原理 269
14.3 在TensorFlow中实现词嵌入 270
14.3.1 下载数据集 270
14.3.2 制作词表 272
14.3.3 生成每步的训练样本 274
14.3.4 定义模型 276
14.3.5 执行训练 279
14.3.6 可视化 281
14.4 与第12章的对比 284
14.5 总结 285
第15章 在TensorFlow中进行时间序列预测 286
15.1 时间序列问题的一般形式 287
15.2 用TFTS读入时间序列数据 287
15.2.1 从Numpy数组中读入时间序列数据 288
15.2.2 从CSV文件中读入时间序列数据 291
15.3 使用AR模型预测时间序列 293
15.3.1 AR模型的训练 293
15.3.2 AR模型的验证和预测 295
15.4 使用LSTM模型预测时间序列 297
15.4.1 LSTM模型中的单变量时间序列预测 297
15.4.2 LSTM模型中的多变量时间序列预测 299
15.5 总结 301
第16章 神经网络机器翻译技术 302
16.1 Encoder-Decoder模型的原理 303
16.2 注意力机制(Attention) 305
16.3 使用TensorFlow NMT搭建神经网络翻译引擎 309
16.3.1 示例:将越南语翻译为英语 309
16.3.2 构建中英翻译引擎 313
16.4 TensorFlow NMT源码简介 317
16.5 总结 319
第17章 看图说话:将图像转换为文字 320
17.1 Image Caption技术综述 321
17.1.1 从Encoder-Decoder结构谈起 321
17.1.2 将Encoder-Decoder应用到Image Caption任务上 322
17.1.3 对Encoder-Decoder的改进1:加入Attention机制 323
17.1.4 对Encoder-Decoder的改进2:加入高层语义 325
17.2 在TensorFlow中实现Image Caption 327
17.2.1 下载代码 327
17.2.2 环境准备 328
17.2.2 编译和数据准备 328
17.2.3 训练和验证 330
17.2.4 测试单张图片 331
17.3 总结 332
第18章 强化学习入门之Q 333
18.1 强化学习中的几个重要概念 334
18.2 Q Learning的原理与实验 336
18.2.1 环境定义 336
18.2.2 Q函数 338
18.2.3 Q函数的学习策略 339
18.2.4 ?-greedy策略 341
18.2.5 简单的Q Learning示例 341
18.2.6 更复杂的情况 342
18.3 总结 343
第19章 强化学习入门之SARSA算法 344
19.1 SARSA 算法的原理 345
19.1.1 通过与Q Learning对比学习SARSA算法 345
19.1.2 off-policy与on-policy 346
19.2 SARSA 算法的实现 347
19.3 总结 348
第20章 深度强化学习:Deep Q Learning 349
20.1 DQN算法的原理 350
20.1.1 问题简介 350
20.1.2 Deep Q Network 351
20.1.3 训练方法 352
20.2 在TensorFlow中运行DQN算法 353
20.2.1 安装依赖库 353
20.2.2 训练 355
20.2.3 测试 356
20.3 在TensorFlow中DQN算法的实现分析 357
20.4 总结 360
第21章 策略梯度(Policy Gradient)算法 361
21.1 策略梯度(Policy Gradient)算法的原理 362
21.1.1 Cartpole游戏 362
21.1.2 策略网络(Policy Network) 363
21.1.3 训练策略网络 364
21.2 在TensorFlow中实现策略梯度 算法 365
21.2.1 初始化 365
21.2.2 定义策略网络 366
21.2.3 训练 367
21.3 总结 371

本书勘误

印次
  • 页码:3  •  行数:1  •  印次: 3

    donwload.py应改为download.py

    漫天无名 提交于 2018/6/4 11:37:58
    宋亚东 确认于 2018/6/8 16:51:00
  • 页码:4  •  行数:17  •  印次: 1  •  修订印次: 2

    其中,5000是训练图像个数,…

    应该是:“55000”

    Rambo 提交于 2018/3/30 6:27:20
    宋亚东 确认于 2018/7/17 15:11:10
  • 页码:4  •  行数:18  •  印次: 3  •  修订印次: 2

    它的形状为(55000, 784)。其中,5000是训练******。5000应改为55000。

    kashingliu 提交于 2018/6/18 22:30:01
    宋亚东 确认于 2018/7/17 15:10:42
  • 页码:117  •  行数:2  •  印次: 3  •  修订印次: 6

    书中117页写道“ 如图3-1中的conv5_3 ” ,然而 找不到图中的conv5_3。。应为“如图2-22中的conv5_3”

    itmessager 提交于 2018/8/15 13:50:57
    宋亚东 确认于 2018/8/27 15:23:54
  • 页码:122  •  行数:11  •  印次: 1

    “其中有1680人对应不止一张图像。”原文止为只

    落花有梦 提交于 2018/3/29 22:39:37
    宋亚东 确认于 2018/6/8 16:37:13

读者评论

  • 你好,我在第八章用mnist训练GAN的时候反复遇到问题:
    FileNotFoundError: [Errno 2] No such file or directory: ‘./data\mnist\train-images-idx3-ubyte’
    直接用download.py下载不行,去网上下载也不行,请问该如何解决?

    让让噢发表于 2018/10/17 10:04:00
  • 何老师,第6章使用已有模型验证时报模型版本低:
    tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 **X
    Model directory: /home/chenhao/models/facenet/20170512-110547/
    Metagraph file: model-20170512-110547.meta
    Checkpoint file: model-20170512-110547.ckpt-250000
    WARNING:tensorflow:The s**ed meta_graph is possibly from an older release:
    ‘model_variables’ collection should be of type ‘byte_list’, but instead is of type ‘node_list’.
    然后很长时间后自己就killed了。目前我环境ubuntu 16.04 ,tensorflow 1.4.0 ,python 2.7

    hymanSlime发表于 2018/10/15 13:06:05
    • 虚拟机里linux系统,用 cpu的tensorflow

      hymanSlime发表于 2018/10/15 13:40:46
    • 代码里用的GPU设置....

      hymanSlime发表于 2018/10/15 13:52:05
    • 在本机的win10+python3.5+tensorflow1.6 GPU 环境跑模型验证倒是可以了,

      hymanSlime发表于 2018/10/15 16:04:11
  • 第三章运行train_image_classifier的时候,提示说ValueError: You must supply the dataset directory with —dataset_dir,可是我明明按照书上的操作建立了satellite文件夹和其中的data文件夹,怎么会说没有提供数据集的路径呢?

    升哥发表于 2018/10/9 10:38:19
  • 第五章中,安装了tensorflow object detection api 后,不是模型都有了吗,为啥下一节中在执行训练好的模型中,还要再下载预训练模型?

    xuzxing发表于 2018/10/6 17:48:11
  • 有疑问的可进群互相交流,群号:154114989

    yhlz49发表于 2018/10/5 19:04:09