1、CMYCMMYCYCMYK 内 容 简 介 本书以深度学习算法入门为主要内容,通过系统介绍 Python、NumPy、SciPy 等科学计算库,深度学习主流算法,深度学习前沿研究,深度学习服务云平台构建四大主线,向读者系统地介绍了深度学习的主要内容和研究进展。本书介绍了 Python、NumPy、SciPy 的使用技巧,面向谷歌推出的开源深度学习框架TensorFlow,向读者展示了利用 TensorFlow 和 Theano 框架实现线性回归、逻辑回归、多层感知器、卷积神经网络、递归神经网络、长短时记忆网络、去噪自动编码机、堆叠自动编码机、受限玻尔兹曼机、深度信念网络等,并将这些技术用于 M
2、NIST 手写数字识别任务。本书不仅讲述了深度学习算法本身,而且重点讲述了如何将这些深度学习算法包装成 Web 服务。本书旨在帮助广大工程技术人员快速掌握深度学习相关理论和实践,并将这些知识应用到实际工作中。本书可以作为各类深度学习培训班的教材,也可以作为全国高等工科院校“深度学习”课程的教材,还可以作为广大人工智能、深度学习领域工程技术人员的参考书。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 深度学习算法实践:基于 Theano 与 TensorFlow/闫涛,周琦编著.北京:电子工业出版社,2018.4 ISBN 978-7-12
3、1-33793-2.深.闫 周.人工智能算法研究.TP18 中国版本图书馆 CIP 数据核字(2018)第 041449 号 策划编辑:付 睿 责任编辑:牛 勇 特约编辑:赵树刚 印 刷:三河市华成印务有限公司 装 订:三河市华成印务有限公司 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编:100036 开 本:7871092 1/16 印张:36.5 字数:934.4 千字 版 次:2018 年 4 月第 1 版 印 次:2018 年 4 月第 1 次印刷 定 价:109.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系
4、及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:010-51260888-819,。推荐序 深度学习算法实践(基于 Theano 和 TensorFlow)针对深度学习初学者的需求,详细讲解了深度学习典型算法的数学原理,给出了基于 TensorFlow 和 Theano 的算法实现,并以手写数字识别、图像标注、文本生成等为例,演示了深度学习算法的典型应用。作者立足于引导读者从解决问题的思路出发,层层剖析,逐步开发出实用的深度学习系统。通过阅读本书,在熟练掌握深度学习基本数学原理的基础上,读者不仅可以直接将书中内容用于项
5、目实践,而且可以跟踪理解深度学习的最新进展。自 2017 年下半年以来,深度学习又有了一些新进展,如注意力机制、生成式对抗网络、胶囊网络等,虽然本书还没有将其详细纳入,但是相信读者基于本书的知识架构,通过阅读相关论文及文献,理解并掌握这些算法并不困难。当前,人工智能、深度学习技术的发展可谓一日千里,需要时刻跟踪业界的最新进展,才能保证自己的知识结构跟上业界发展步伐。作者拥有较深的理论造诣和丰富的实践经验,希望本书能够帮助读者掌握完整的知识体系,拥有较强的动手能力,成为人工智能、深度学习领域的学习型和实践型人才。中国工程院院士 2018 年 3 月 9 日 深度学习算法实践(基于 Theano
6、和 TensorFlow)-IV-轻松注册成为博文视点社区用户(),扫码直达本书页面。提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。页面入口:http:/ 前 言 2016 年上半年,随着 AlphaGo 战胜围棋世界冠军李世石,深度学习技术迅速进入大众的视野,成为热门技术。无论是科技领域还是创业投资领域,深度学习技术都受到了前所未有的关注,面向深度学习技术的初创公司不断刷新融资数额的纪录。随着深度学习技术的流行,市场上对于
7、深度学习人才的需求量激增。但是,由于深度学习技术涉及高等数学、线性代数、数理统计和机器学习相关知识,故学习曲线比较陡峭。目前国内外著名大学深度学习相关专业硕博士、国家重点实验室学生,都被 BAT 等一线互联网公司抢光了,人才大战有愈演愈烈之势。普通公司和初创公司,在这场人才大战中处于劣势,面临着越来越严重的人才荒。随着深度学习技术的深入应用,企业对深度学习技术人才的渴求是正常的,但是当前市场上对深度学习技术人才的需求是非理性的。一方面,大家疯抢的深度学习人才都是著名院校的硕博士和重点实验室的研究员,但是这部分人所受的训练和精通的领域是做算法研究,而企业的目的是实际应用,二者在很大程度上是不匹配
8、的,最后可能是企业下了血本却没有产生效益;另一方面,对于很多深度学习应用来说,对项目本身业务的理解,比对深度学习算法的理解要重要得多,而由于业务专家不懂深度学习技术,致使很多好的应用领域没有合适的人才来做。编写本书的目的就是解决上述问题,希望读者可以通过对本书的学习,迅速掌握深度学习的理论框架和知识体系,具备在自己的专业领域内应用深度学习技术的能力,同时还具备跟踪深度学习领域最新进展的能力,能够独立复现顶级期刊文章中介绍的新方法和新理论。本书内容及知识体系 第一部分为深度学习算法概述,包括第第一部分为深度学习算法概述,包括第 1 章。章。第 1 章简单介绍神经网络和深度学习发展史、现状和发展趋
9、势,介绍并比较了深度学习开源框架,还介绍了开源框架的选择标准。第二部分为深度学习算法基础,主要讲述深度学习算法中比较成熟的算法,包括第第二部分为深度学习算法基础,主要讲述深度学习算法中比较成熟的算法,包括第 2章到第章到第 7 章。章。第 2 章介绍 Python 开发环境的搭建、NumPy 的使用、Theano 的安装和使用,并用本章介绍的知识实现一个简单的线性回归算法的程序。深度学习算法实践(基于 Theano 和 TensorFlow)-VI-第 3 章讲述逻辑回归算法的数学推导过程,并且讲述了通用学习模型的相关知识,还利用逻辑回归算法对 MNIST 手写数字识别数据集进行训练和识别。第
10、 4 章讲述多层感知器模型算法推导过程,以及数值计算与向量表示方式,并利用多层感知器模型对 MNIST 手写数字识别数据集进行训练和识别。第 5 章讲述卷积神经网络的数学原理,详细讲解卷积神经网络的层间稀疏连接、权值共享和最大池化等技术,并利用卷积神经网络模型对 MNIST 手写数字识别数据集进行训练和识别。第 6 章讲述递归神经网络的数学原理,以字符 RNN 网络为例,向读者演示了简单的计算机写作系统。而且,以微软图像标注数据集为例,以测试驱动开发的形式,向读者介绍利用递归神经网络做图像标注的典型应用。第 7 章讲述长短时记忆网络的网络架构和数学原理,并以大型影评数据集为例,采用长短时记忆网
11、络进行情感计算。第三部分为深度学习算法进阶,主要讲述深度学习算法中比较前沿的算法,包括第第三部分为深度学习算法进阶,主要讲述深度学习算法中比较前沿的算法,包括第 8章到第章到第 11 章。章。第 8 章讲述自动编码机的数学原理,重点介绍实际中应用较多的去噪自动编码机和稀疏自动编码机,并以去噪自动编码机为例,对 MNIST 手写数字识别数据集进行特征提取。第 9 章讲述将去噪自动编码机进行分层训练,组合成堆叠去噪自动编码机,并将堆叠去噪自动编码机用于 MNIST 手写数字识别任务。第 10 章讲述受限玻尔兹曼机的数学原理,并将其用于 MNIST 手写数字识别任务。第 11 章讲述深度信念网络的数
12、学原理,以及其与受限玻尔兹曼机的关系,并将其用于MNIST 手写数字识别任务。第四部分为机器学习基础,主要讲述一些基础的机器学习算法,包括第第四部分为机器学习基础,主要讲述一些基础的机器学习算法,包括第 12 章和第章和第 13 章。章。第 12 章讲述生成式学习的基础理论,并将高斯判别分析用于癌症判别,将朴素贝叶斯算法用于垃圾邮件过滤。第 13 章简单介绍支撑向量机算法的数学原理。第五部分为深度学习平台第五部分为深度学习平台 API,这部分讲述将深度学习算法包装成深度学习服务云平台的技术,包括第,这部分讲述将深度学习算法包装成深度学习服务云平台的技术,包括第 14 章和第章和第 15 章。章
13、。第 14 章介绍 Python 的 Web 开发环境及开发技术。第 15 章应用 Web 开发技术,将前面介绍的多层感知器模型包装成 RESTful 服务,用户可以通过网页上传图片文件,并得到识别后的结果。由于篇幅所限,书中很多例子只给出了部分代码,这些代码对于理解算法的实现原理是足够的,但是考虑到代码的完整性,我们将书中绝大部分例程都上传到了 GitHub 的开源项目https:/ 16.04+Python3.6+TensorFlow1.2 和 Windows+Anaconda+TensorFlow1.2 下均可正常运行。读者可以下载相关源码,通过运行这些源码加深对书中内容的理解。目 录
14、第一部分 深度学习算法概述 第 1 章 深度学习算法简介.2 1.1 神经网络发展简史.2 1.1.1 神经网络第一次兴起.3 1.1.2 神经网络沉寂期(20 世纪 80 年代21 世纪).4 1.1.3 神经网络技术积累期(20 世纪 90 年代2006 年).5 1.1.4 深度学习算法崛起(2006 年至今).8 1.2 深度学习现状.10 1.2.1 传统神经网络困境.10 1.2.2 深度多层感知器.12 1.2.3 深度卷积神经网络.14 1.2.4 深度递归神经网络.15 1.3 深度学习研究前瞻.16 1.3.1 自动编码机.17 1.3.2 深度信念网络.18 1.3.3
15、生成式网络最新进展.19 1.4 深度学习框架比较.20 1.4.1 TensorFlow.20 1.4.2 Theano.21 1.4.3 Torch.22 1.4.4 DeepLearning4J.23 1.4.5 Caffe.23 1.4.6 MXNet.24 1.4.7 CNTK.27 1.4.8 深度学习框架造型指导原则.27 1.5 深度学习入门路径.28 1.5.1 运行 MNIST.28 深度学习算法实践(基于 Theano 和 TensorFlow)-VIII-1.5.2 深度学习框架的选择.29 1.5.3 小型试验网络.33 1.5.4 训练生产网络.33 1.5.5 搭
16、建生产环境.34 1.5.6 持续改进.35 第二部分 深度学习算法基础 第 2 章 搭建深度学习开发环境.38 2.1 安装 Python 开发环境.38 2.1.1 安装最新版本 Python.38 2.1.2 Python 虚拟环境配置.39 2.1.3 安装科学计算库.40 2.1.4 安装最新版本 Theano.40 2.1.5 图形绘制.40 2.2 NumPy 简易教程.43 2.2.1 Python 基础.43 2.2.2 多维数组的使用.51 2.2.3 向量运算.58 2.2.4 矩阵运算.60 2.2.5 线性代数.62 2.3 TensorFlow 简易教程.68 2.3.1 张量定义.69 2.3.2 变量和 placeholder.69 2.3.3 神经元激活函数.71 2.3.4 线性代数运算.72 2.3.5 操作数据集.74 2.4 Theano 简易教程.77 2.4.1 安装 Theano.77 2.4.2 Theano 入门.78 2.4.3 Theano 矩阵相加.79 2.4.4 变量和共享变量.80 2.4.5 随机数的使用.84 2.4.