《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日
donwload.py应改为download.py
应该是:“55000”
它的形状为(55000, 784)。其中,5000是训练******。5000应改为55000。
页脚注释“1 形状(784.10)表示一个784行10列的矩阵”,应为“1 形状(784, 10)表示一个784行10列的矩阵”
tf.trainstart queuerunners中,start和queue之间多了一个空格