深度学习:主流框架和编程实战

更多详情

内容简介: 自20世纪80年代以来,机器学习已经在算法、理论和应用等方面取得巨大成功,在产业界与学术界影响深刻。深度学习作为机器学习的一个分支,在当今大数据的背景下,随着数据量的激增、计算能力的增强以及计算成本的降低,应用范围逐步扩大,尤其在语音识别、图像识别和图像处理领域取得了突出的成果。
目前,人工智能技术方兴未艾,作为其核心技术的深度学习的发展如火如荼,各家研究机构提出了各自的深度学习框架,并出现了很多新方法。众多研究者和专业人员开始学习深度学习,但是目前市场缺乏介绍深度学习框架以及深度学习方法的综合性著作,大家需要通过上网查找资料、调参数、运行实例和二次编码来学习,每一步都可能遇到很多问题和阻碍。这也促使作者编写了这本深度学习的实践教程,目的是使初学者快速入门并掌握解决实际问题的能力。
本书主要从当下深度学习的四大主流框架出发,分析框架结构,并配以网络实例来对实际问题进行处理进而深入理解框架结构。书中的算法代码配有详细的解释说明,以便于读者能够在不熟悉代码语言的情况下仍能了解网络框架的结构与特点。读者在阅读本书的过程中,不但可以增强对深度学习的理解,还能够提高动手操作能力。

目录: 前言
第1章 绪论 1
1.1 机器学习与深度学习 1
1.1.1 机器学习与深度学习的关系 2
1.1.2 传统机器学习与深度学习的对比 3
1.2 统计学与深度学习 5
1.2.1 统计学与深度学习的关系 5
1.2.2 基于统计的深度学习技术 6
1.3 本书涉及的深度学习框架 8
1.4 优化深度学习的方法 8
1.5 深度学习展望 9
第2章 TensorFlow深度学习框架构建方法与图像分类的实现 12
2.1 TensorFlow概述 12
2.1.1 TensorFlow的特点 13
2.1.2 TensorFlow中的模型 14
2.2 TensorFlow框架安装 16
2.2.1 基于Anaconda的安装 16
2.2.2 测试TensorFlow 19
2.3 基于TensorFlow框架的图像分类实现(ResNet-34) 20
2.3.1 应用背景 20
2.3.2 ResNet 21
2.3.3 ResNet程序实现 24
2.3.4 详细代码解析 27
2.3.5 实验结果及分析 51
第3章 Caffe深度学习框架搭建与图像语义分割的实现 56
3.1 Caffe概述 56
3.1.1 Caffe的特点 56
3.1.2 Caffe框架结构 57
3.2 Caffe框架安装与调试 59
3.3 基于Caffe框架的图像分割实现(FCN) 64
3.3.1 用Caffe构建卷积神经网络 64
3.3.2 FCN-8s网络简介 69
3.3.3 详细代码解读 85
3.3.4 实验结果与结论 98
第4章 Torch深度学习框架搭建与目标检测的实现 100
4.1 Torch概述 100
4.1.1 Torch的特点 100
4.1.2 Lua语言 102
4.2 Torch框架安装 104
4.3 基于Torch框架的目标检测实现(Faster R-CNN) 113
4.3.1 Torch的类和包的基本用法 113
4.3.2 用Torch构建神经网络 116
4.3.3 Faster R-CNN介绍 119
4.3.4 Faster R-CNN实例 127
4.3.5 实验结果分析 161
第5章 MXNet深度学习框架构建与自然语言处理的实现 164
5.1 MXNet概述 164
5.1.1 MXNet基础知识 164
5.1.2 编程接口 166
5.1.3 系统实现 169
5.1.4 MXNet的关键特性 171
5.2 MXNet框架安装 172
5.3 基于MXNet框架的自然语言处理实现(LSTM) 179
5.3.1 自然语言处理应用背景 179
5.3.2 RNN及LSTM网络 180
5.3.3 Bucketing及不同长度的序列训练 183
5.3.4 详细代码实现 185
5.3.5 实验过程及实验结果分析 191
第6章 迁移学习 195
6.1 迁移学习发展概述 195
6.2 迁移学习的类型与模型 196
6.2.1 冻结源模型与微调源模型 197
6.2.2 神经网络迁移学习模型与分类器迁移学习模型 197
6.3 迁移学习方法实例指导 199
6.3.1 迁移学习应用示例 199
6.3.2 实验结论 202
第7章 并行计算与交叉验证 203
7.1 并行计算 203
7.1.1 数据并行框架 204
7.1.2 模型并行框架 205
7.1.3 数据并行与模型并行的混合架构 205
7.2 交叉验证 207
7.2.1 留出法 207
7.2.2 K折交叉验证 208
7.2.3 留一交叉验证 209
参考文献 211

前言: 自20世纪80年代以来,机器学习已经在算法、理论和应用等方面取得了巨大成功,广泛应用于产业界与学术界。简单来说,机器学习就是通过算法使得机器能从大量历史数据中学习规律,从而对新的样本完成智能识别或对未来做预测。深度学习是一种机器学习方法,在一些最新的研究领域和新的应用背景下,可用数据量的激增、计算能力的增强以及计算成本的降低为深度学习的快速发展铺平了道路,同时也为深度学习在各大领域的应用提供了支撑。自AlphaGo被提出并成功击败职业围棋手后,“深度学习”这一概念快速进入人们的视野并在业界引起了轰动,其因强大的特征提取能力以及灵活性在国内外各大企业中掀起一阵狂潮,在语音识别、图像识别和图像处理领域取得的成果尤为突出。
本书是以实践案例为主的深度学习框架结合编程实战的综合性著作,将带领读者逐步掌握深度学习需要的数据处理、调整参数、运行实例和二次编码,不仅帮助读者理解理论知识,而且能够使读者熟练掌握各种深度学习框架下的编程控制。本书配有大量的实践案例,既便于课堂教学,又便于学生自学。此外本书还配有同步PPT课件和程序源码,可供教师进行实验课程辅导。
本书介绍了四种深度学习框架(TensorFlow、Caffe、Torch、MXNet)的运行原理,配合实例介绍了框架的详细安装、程序设计、调参和二次接口的详细编程过程,引领读者完整搭建深度学习框架,相信本书能够从实战的角度帮助读者快速掌握和提高深度学习编程的技能。
全书内容可分为绪论、四大框架、迁移学习和并行计算/交叉验证四大部分,共7章。
第1章讨论深度学习与机器学习的关系、深度学习与统计学的关系、深度学习框架、深度学习中涉及的优化方法以及对深度学习的展望五个方面的内容,从理论上对深度学习进行全面深刻的剖析,旨在为后续学习提供理论铺垫与指导。
第2章对TensorFlow深度学习框架进行详细介绍,主要包括TensorFlow运作原理、模型构建、框架安装,并进一步介绍了TensorFlow框架下具体网络的图像分类编程实现以及详细代码的解读。
第3章从理论与实战两方面对Caffe深度学习框架的发展、结构以及具体的搭建过程进行详细介绍,并在Caffe深度学习框架下构建全卷积神经网络(Fully Convolutional Network,FCN),用该网络进行图像语义分割的实战编程,对该案例程序代码进行详细解读。
第4章介绍Torch深度学习框架的基础知识,同时介绍Torch深度学习框架中使用的Lua语言;按照Torch框架的安装过程,以一个具体的目标检测实例为出发点,详细介绍Torch的类和包的用法以及构建神经网络的全过程,最后介绍Faster R-CNN的方法和实例。
第5章对MXNet框架进行详细介绍,包括MXNet的基本概念和特点、MXNet的安装过程等,利用自然语言处理的实例来进一步展示MXNet在深度学习方面的应用实战。
第6章介绍迁移学习发展、迁移学习的类型与模型,并以实际案例对迁移学习的过程进行详细介绍与分析。
第7章在深度学习的背景下分别对并行计算和交叉验证这两种方法进行详细介绍。
本书既可作为大学本科、研究生相关专业教材,也适用于各种人工智能、机器学习的培训与认证体系,同时可供广大深度学习开发人员参考。
本书由多人合作完成,其中,第1章由太原理工大学强彦编写,第2章由太原理工大学赵涓涓编写,第3章由太原理工大学王华编写,第4章由太原理工大学肖小娇编写,第5章由晋中学院董云云编写,第6章由太原理工大学马瑞青编写,第7章由大同大学傅文博编写,全书由强彦审阅。
本书在撰写过程中得到了赵鹏飞、罗嘉滢、肖宁、高慧明、吴保荣等项目组成员和业内专家的大力支持和协助,在此一并表示衷心的感谢!
由于作者水平有限,不当之处在所难免,恳请读者及同仁赐教指正。

媒体评论: 剖析四大深度学习框架,结合真实案例
突出实战,迈出成为人工智能工程师的第一步!
自20世纪80年代以来,机器学习已经在算法、理论和应用等方面取得巨大成功,在产业界与学术界影响深刻。深度学习作为机器学习的一个分支,在当今大数据的背景下,随着数据量的激增、计算能力的增强以及计算成本的降低,应用范围逐步扩大,尤其在语音识别、图像识别和图像处理领域取得了突出的成果。
目前,人工智能技术方兴未艾,作为其核心技术的深度学习的发展如火如荼,各家研究机构提出了各自的深度学习框架,并出现了很多新方法。众多研究者和专业人员开始学习深度学习,但是目前市场缺乏介绍深度学习框架以及深度学习方法的综合性著作,大家需要通过上网查找资料、调参数、运行实例和二次编码来学习,每一步都可能遇到很多问题和阻碍。这也促使作者编写了这本深度学习的实践教程,目的是使初学者快速入门并掌握解决实际问题的能力。
本书主要从当下深度学习的四大主流框架出发,分析框架结构,并配以网络实例来对实际问题进行处理进而深入理解框架结构。书中的算法代码配有详细的解释说明,以便于读者能够在不熟悉代码语言的情况下仍能了解网络框架的结构与特点。读者在阅读本书的过程中,不但可以增强对深度学习的理解,还能够提高动手操作能力。