描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121291159
√ Caffe是应用*广的深度学习框架,非常适于用来练手和入门。
√ 本书侧重解决实际问题及理解深度学习理论,实例、习题丰富。
√ 既狠抓基功又紧扣产业,既详述工具、模型又深入分析源码。
第1天 什么是深度学习 2
1.1 星星之火,可以燎原 3
1.2 师夷长技 4
1.2.1 谷歌与微软 4
1.2.2 Facebook、亚马逊与NVIDIA 5
1.3 中国崛起 6
1.3.1 BAT在路上 6
1.3.2 星光闪耀 7
1.3.3 企业热是风向标 8
1.4 练习题 9
第2天 深度学习的过往 10
2.1 传统机器学习的局限性 10
2.2 从表示学习到深度学习 11
2.3 监督学习 12
2.4 反向传播算法 13
2.5 卷积神经网络 15
2.6 深度学习反思 17
2.7 练习题 18
2.8 参考资料 18
第3天 深度学习工具汇总 19
3.1 Caffe 19
3.2 Torch & OverFeat 20
3.3 MxNet 22
3.4 TensorFlow 22
3.5 Theano 24
3.6 CNTK 24
3.7 练习题 25
3.8 参考资料 26
第4天 准备Caffe环境 27
4.1 Mac OS环境准备 27
4.2 Ubuntu环境准备 28
4.3 RHEL/Fedora/CentOS环境准备 29
4.4 Windows环境准备 29
4.5 常见问题 32
4.6 练习题 32
4.7 参考资料 33
第5天 Caffe依赖包解析 34
5.1 ProtoBuffer 34
5.2 Boost 38
5.3 GFLAGS 38
5.4 GLOG 39
5.5 BLAS 40
5.6 HDF5 41
5.7 OpenCV 42
5.8 LMDB和LEVELDB 42
5.9 Snappy 43
5.10 小结 43
5.11 练习题 49
5.12 参考资料 49
第6天 运行手写体数字识别例程 50
6.1 MNIST数据集 50
6.1.1 下载MNIST数据集 50
6.1.2 MNIST数据格式描述 51
6.1.3 转换格式 53
6.2 LeNet-5模型 60
6.2.1 LeNet-5模型描述 60
6.2.2 训练超参数 65
6.2.3 训练日志 66
6.2.4 用训练好的模型对数据进行预测 76
6.2.5 Windows下训练模型 76
6.3 回顾 78
6.4 练习题 79
6.5 参考资料 79
篇尾语 80
中篇 热恋
第7天 Caffe代码梳理 82
7.1 Caffe目录结构 82
7.2 如何有效阅读Caffe源码 84
7.3 Caffe支持哪些深度学习特性 86
7.3.1 卷积层 86
7.3.2 全连接层 89
7.3.3 激活函数 91
7.4 小结 99
7.5 练习题 99
7.6 参考资料 100
第8天 Caffe数据结构 101
8.1 Blob 101
8.1.1 Blob基本用法 102
8.1.2 数据结构描述 108
8.1.3 Blob是怎样炼成的 109
8.2 Layer 125
8.2.1 数据结构描述 126
8.2.2 Layer是怎样建成的 127
8.3 Net 136
8.3.1 Net基本用法 136
8.3.2 数据结构描述 139
8.3.3 Net是怎样绘成的 139
8.4 机制和策略 146
8.5 练习题 147
8.6 参考资料 148
第9天 Caffe I/O模块 149
9.1 数据读取层 149
9.1.1 数据结构描述 149
9.1.2 数据读取层实现 150
9.2 数据变换器 155
9.2.1 数据结构描述 155
9.2.2 数据变换器的实现 156
9.3 练习题 171
第10天 Caffe模型 172
10.1 prototxt表示 173
10.2 内存中的表示 176
10.3 磁盘上的表示 176
10.4 Caffe Model Zoo 178
10.5 练习题 180
10.6 参考资料 180
第11天 Caffe前向传播计算 181
11.1 前向传播的特点 181
11.2 前向传播的实现 182
11.2.1 DAG构造过程 182
11.2.2 Net Forward实现 190
11.3 练习题 192
第12天 Caffe反向传播计算 193
12.1 反向传播的特点 193
12.2 损失函数 193
12.2.1 算法描述 194
12.2.2 参数描述 195
12.2.3 源码分析 195
12.3 反向传播的实现 203
12.4 练习题 205
第13天 Caffe化求解过程 207
13.1 求解器是什么 207
13.2 求解器是如何实现的 208
13.2.1 算法描述 208
13.2.2 数据结构描述 210
13.2.3 CNN训练过程 218
13.2.4 CNN预测过程 225
13.2.5 Solver的快照和恢复功能 227
13.3 练习题 230
第14天 Caffe实用工具 231
14.1 训练和预测 231
14.2 特征提取 241
14.3 转换图像格式 247
14.4 计算图像均值 254
14.5 自己编写工具 257
14.6 练习题 257
篇尾语 258
下篇 升华
第15天 Caffe计算加速 260
15.1 Caffe计时功能 260
15.2 Caffe GPU加速模式 262
15.2.1 GPU是什么 262
15.2.2 CUDA是什么 263
15.2.3 GPU、CUDA和深度学习 263
15.2.4 Caffe GPU环境准备 264
15.2.5 切换到Caffe GPU加速模式 268
15.3 Caffe cuDNN加速模式 269
15.3.1 获取cuDNN 270
15.3.2 切换到Caffe cuDNN加速模式 270
15.3.3 Caffe不同硬件配置性能 272
15.4 练习题 273
15.5 参考资料 273
第16天 Caffe可视化方法 275
16.1 数据可视化 275
16.1.1 MNIST数据可视化 275
16.1.2 CIFAR10数据可视化 277
16.1.3 ImageNet数据可视化 278
16.2 模型可视化 279
16.2.1 网络结构可视化 279
16.2.2 网络权值可视化 281
16.3 特征图可视化 288
16.4 学习曲线 295
16.5 小结 298
16.6 练习题 298
16.7 参考资料 299
第17天 Caffe迁移和部署 300
17.1 从开发测试到生产部署 300
17.2 使用Docker 302
17.2.1 Docker基本概念 302
17.2.2 Docker安装 303
17.2.3 Docker入门 305
17.2.4 Docker使用进阶 312
17.3 练习题 317
17.4 参考资料 317
第18天 关于ILSVRC不得不说的一些事儿 318
18.1 ImageNet数据集 318
18.2 ILSVRC比赛项目 319
18.2.1 图像分类(CLS) 320
18.2.2 目标定位(LOC) 320
18.2.3 目标检测(DET) 321
18.2.4 视频目标检测(VID) 322
18.2.5 场景分类 322
18.3 Caffe ILSVRC实践 323
18.4 练习题 326
18.5 参考资料 326
第19天 放之四海而皆准 327
19.1 图像分类 327
19.1.1 问题描述 327
19.1.2 应用案例——商品分类 330
19.2 图像中的字符识别 332
19.2.1 问题描述 332
19.2.2 应用案例——身份证实名认证 333
19.3 目标检测 337
19.3.1 问题描述 337
19.3.2 实践——运行R-CNN例程 337
19.4 人脸识别 340
19.4.1 问题描述 340
19.4.2 实践——使用Face SDK实现人脸检测 342
19.5 自然语言处理 343
19.5.1 问题描述 343
19.5.2 实践——NLP-Caffe 344
19.6 艺术风格 350
19.6.1 问题描述 350
19.6.2 实践——style-transfer 352
19.7 小结 354
19.8 练习题 354
19.9 参考资料 355
第20天 继往开来的领路人 356
20.1 Caffe Traps and Pitfalls 356
20.1.1 不支持任意数据类型 356
20.1.2 不够灵活的高级接口 357
20.1.3 繁杂的依赖包 357
20.1.4 堪忧的卷积层实现 357
20.1.5 架构之殇 358
20.1.6 应用场景局限性 358
20.2 实践——Caffe2 359
20.3 练习题 361
20.4 参考资料 362
第21天 新生 363
21.1 三人行,必有我师 363
21.2 路漫漫其修远兮,吾将上下而求索 364
篇尾语 366
结束语 367
附录A 其他深度学习工具 368
推荐序一
近年来,几乎整个智能学科的研究者们都注意到一个技术名词——深度学习(Deep Learning)。这个略带神秘色彩的名字和其代表的前沿性技术被著名的《MIT技术评论》评选为2013年世界10大突破性技术之首。而在此之前,包括Google、Microsoft、Facebook等公司在内的诸多信息科技巨头都已争相在此技术上投入了前所未有的重视力度和战略资源,继而高调宣布布局智能应用领域。学术界和工业界不遗余力地抢占相关研究和技术的制高点,人们并没有感到奇怪,因为所有人都明白:这也许是人类在探索人工智能的伟大旅程和漫漫征途上的重要一刻。
关于人工神经网络的研究可以追溯到20世纪40年代。在其漫长的历史上经历了数次戏剧性的波折。然而近年来,随着大量数据的获得、先进理论的发现,以及高性能并行计算技术的发展,以深度神经网络为载体的特征学习技术相继在语音、视觉、语言等诸多研究领域中取得了突破性的成果,并且正以不可阻挡之势“入侵”传统技术占领的各个领域。
随着深度学习技术在学术界和工业界得到广泛认可,越来越多的人开始参与到深度学习的相关研究和实践中来。然而,由于存在一定的技术门槛,快速入手深度学习的研究并不是一件容易的事情。其中的一个重要原因是,深度学习中的许多问题非常依赖于实践。然而长期以来,学术界和工业界缺少一款专门为深度学习而设计的,兼具性能、灵活性和扩展性等诸多优势于一身的开源框架。这使得无论是快速实现算法,还是复现他人的结论,都存在着实践上的困难。研究人员和工程师们迫切需要一套通用而高效的深度学习开源框架。
2013年,一款叫作“Caffe”的深度学习框架由加州大学伯克利分校的@贾扬清博士在Github上发布。发布伊始,Caffe框架就得到了广泛的关注。Caffe框架以“层”为单位对深度神经网络的结构进行了高度的抽象,通过一些精巧的设计显著优化了执行效率,并且在保持高效实现的基础上不失灵活性。无论在结构、性能上,还是代码质量上,Caffe都是一款十分出色的开源框架。更重要的是,它将深度学习的每一个细节都原原本本地展现出来,供人们学习和实践。可以说,Caffe框架的发布极大地降低了深度学习研究和开发的难度。
正是由于上述的诸多优势,Caffe框架迅速流行起来,并且逐步形成了强大的用户社区。经过两年多的版本迭代,Caffe框架已经在学术界和工业界得到了广泛的认可。在学术界,目前每天都有以Caffe框架作为底层实现的研究成果发布;而在工业界,已经有许多产品使用Caffe作为其深度学习算法实现的内核。从学术界到工业界,大家可以共享同一套底层代码,基于同一套平台进行研究、交流和生产,这是一件令人愉悦的事情。可以说,Caffe开源项目对于促进整个深度学习研究领域的快速发展具有不可磨灭的贡献。
对于刚刚接触深度学习的朋友们来说,通过结合Caffe的代码来加深对理论的理解,也许是一种事半功倍的方法。Caffe框架天然的清晰层次和良好的代码可读性,为入手深度学习的朋友们提供了教科书般的实践指导。然而,由于Caffe中有大量技术细节是在论文中无法找到的,想要快速理解Caffe框架内部的种种精要往往需要费一番周折。幸好,有一些先行者为大家分享了相关的知识。
几天前,我有幸接到好友@卜居的邀请,为他的《深度学习:21天实战Caffe》新书做序。这本书是国内本在代码级别上全面剖析Caffe框架的指导书,同时也是一本真正的实战手册。本书涉及深度学习的基本理论、Caffe的设计思想、Caffe中各模块的具体实现,以及各种实例等内容。书中对Caffe框架的分析非常细致,涵盖的内容也颇为丰富,可以说是一本入手Caffe实践的技术手册,因此特别适合于Caffe的初学者阅读。相信本书可以帮助朋友们少走许多弯路。有关Caffe的诸多奥秘,@卜居将会在书中为您一一呈现。
感谢创立和推动深度学习研究的科学家们,感谢Caffe框架的作者贾扬清博士,感谢本书的作者@卜居,以及所有为深度学习技术的发展而奋斗的朋友们。我们的征途是星辰与大海,让我们一起努力,向着实现人工智能的伟大目标前进!
——辛淼,北京航空航天大学博士生,Caffe中国用户社区(caffecn.cn)创始人
推荐序二
在各色缤纷的科技创新报道中,人工智能(AI)成果引发的社会性冲击无疑前所未有。一些科技术语如“深度学习”,对信息技术类学生而言变得不再陌生。虽然国际科技界对相关领域的研究已有数十年的历史,而跳跃式进步还只是近若干年的事。正是这个原因,关于机器智能和“深度学习”的学习类书籍大多偏重理论,或散见于外刊上发表的研究论文、各个研究发展机构的研究报告、开源资料等,鲜有从工程实践出发系统地介绍深度学习的书籍。
国外研究机构设置的开源社区的繁荣发展,从工程实现方面补充了理论研究的不足。然而,对开源代码的阅读、理解、应用对于非机器学习专业人士有较大的挑战性。阿里云计算有限公司的赵永科工程师(博客昵称:卜居)在研发实践的基础上,对深度学习从基础理论到编程实践进行了系统的整理,形成了《深度学习:21天实战Caffe》一书。这是一个有技术深度、处于国际技术竞争中的领域;而本书是一个研发亲历者对技术深入理解后的总结,十分难得。
本书的写作风格是引导性的,围绕深度学习基础,通过代码导读方式,循序渐进,揭开了深度学习的神秘面纱,让深度学习技术,包括理论和工程实现,贴近所有 AI 爱好者。相信本书的出版能够激发更多研究者的兴趣,推动AI技术在中国的发展和应用。
——邹谋炎 中国科学院大学教授,研究员,洪堡学者
推荐序三
让机器具有人类的智能是科学家们从计算机诞生开始就一直在努力的方向,但是由于选择了基于规则的算法,效果一直得不到大的提升,论文中经常以效果比乱猜好作为结论。卷积神经网络的发明者Geoffrey Hinton在20世纪70年代就已经提出了今天的深度学习理论,但是限于当时的计算能力,一直不被人重视。21世纪以来,随着NVIDIA GPU的广泛应用,人工神经网络发挥了它应有的价值,成为今天人工智能的代表性成就,Hinton也被尊称为鼻祖。
当GPU在深度学习领域大范围使用时,研究人员遇到了一个重大的问题——要写大量的复杂的神经网络代码,这带来了巨大的困难。在这个历史性的关键时刻,贾扬清同学开发的Caffe适时地出现了,Caffe让只要会C 编程的人员就可以编写深度学习代码,一下子就降低了深度学习的门槛。随后Caffe得到了广泛使用,并且获得了社区的广泛支持,也得到了NVIDIA的大力支持,获得了充足的发展,几乎可以说不知道Caffe就不能说会深度学习。
Caffe把深度学习的门槛降低了很多,但是实际上依旧需要了解大量的代码细节才能对其进行修改,而深度学习又是一个计算密集的应用,如何写出高效的代码也非常重要。卜居做过许多有关Caffe的工作,包括优化卷积算法,非常了解Caffe框架的各个细节,他编写的《深度学习:21天实战Caffe》一书非常详细、专业。
卜居用人类的恋爱过程来比喻深度学习的学习过程,从初识、热恋到升华,很让人称道。在初识阶段,从深度学习的概念、历史开始,介绍深度学习和基本理论与传统机器学习算法的不同,也包含了业界对深度学习的反思。在热恋阶段,在具体实操方面,从Caffe的安装开始介绍,到具体运行minst数据集;从Caffe的目录结构、不同层(功能)和数据抽象的实现细节,到如何求解一个深度学习模型,卜居都一一精确地解读。在升华阶段,卜居详细地解说了Caffe支持的NVIDIA GPU加速工具CUDA和cuDNN,然后介绍了Caffe可视化方法,以及如何在生产环境中部署训练好的Caffe模型。
本书虽然以21天起名,但是其真实内容是需要读者每天24小时学习才能够完全掌握的,相信读者会一天24小时手不释卷。
我郑重地向大家推荐此书。
——风辰,并行计算领域专家,深度学习平台架构师
前 言
缘起
2014年,我开始在阿里云进行深度学习平台优化,使用了开源框架Caffe,其间在多种GPU服务器上部署运行,同时也根据内部业务需求修改源码,研究基于FFT的卷积层加速方法(有幸与Facebook AI Research Yann LeCun老爷子同时做同一件事)。在学习和修改Caffe源码过程中根据个人理解写了数篇博客,本是无心插柳,孰料有一天博文视点编辑@永恒的侠少找到我,建议将博客内容进一步扩展为一本深度学习入门书,贴近实际,让更多读者走近这个如火如荼的领域。理想远大,现实残酷,互联网公司的工作强度大,常常加班,还要抽时间梳理写作思路,迟迟不能交出一份满意的书稿。熬夜艰辛,码字劳苦,时而思如泉涌,时而困顿踌躇,磨蹭半年有余,总算付梓。
在写作过程中,从头到尾重新审视了一遍近年大火的深度学习技术,提炼了经典论文的精华,深深为其近30年的坎坷历程唏嘘不已。我们目前看到的深度学习模型和基本理论可能比我们的年龄都要大,受限于当时计算能力不足,数据集也相对匮乏,深度学习一度陷入研究低谷,直到云计算、大数据时代的到来,日益增长的数据和计算能力为深度学习提供了适宜的温度和土壤,也为其突飞猛进的成长提供了充足的养料。
我们赶上了好时代。在物质和文化如此繁荣之时,有更多的人愿意思考未来——一个充满人工智能技术的时代。自动驾驶汽车、智能机器人、无人机……很多科幻电影中的技术正在成为现实,这一切都得益于深度学习技术和相应软硬件系统的发展进步。通过本书内容,读者将逐步走进深度学习,了解其过去、现在和未来。
本书读者
本书非常适合以下读者:
? 对人工智能、机器学习感兴趣的读者;
? 希望用深度学习完成设计的计算机或电子信息专业学生;
? 准备开设机器学习、深度学习实践课的授课老师;
? 学习过C ,希望进一步提升编程水平的开发者;
? 刚入坑的机器学习、语音、机器视觉、智能机器人研发或算法工程师。
致谢
首先要感
深度学习是当今人工智能领域*炙手可热的技术,Caffe又是深度学习众多开源框架中很杰出的一款。永科撰写的这本著作,倾注了很多心血——既有深度学习理论知识的讲解,又有Caffe源代码的剖析,还包括解决实际问题的案例;内容翔实、思考全面、深入浅出,每章末尾还附有练习题和参考资料,是大家了解深度学习知识、实践人工智能应用的一本优秀指南。
——陈运文 博士 达观数据董事长&CEO
赵永科的文章和他本人的工作态度一样诚恳。本书不仅收纳深度学习的*心法与*产业进展,还手把手带领读者实践工具设置与模型搭建,并深入浅出地剖析Caffe源代码和实現方法,可说是内外兼修,*是诚意十足的大作!
——简士伟 英特尔(数据中心工程事业群)平台方案架构师
本书带领您深入浅出地穿越深度学习模型,揭开它神秘的面纱;通俗易懂,实践性强,用实例引导读者从基本原理到代码实现再到应用场景,涵盖了深度学习的热门技术,是目前市面上为数不多的深度学习源码解析类参考资料,也是一本可以让你快速掌握深度学习精髓的好书!
——刘莹 中国科学院大学教授|博导,CUDA教学中心主持人|CUDA研究中心主持人
本书对深度学习的历史做了简单梳理,对深度学习常用开源库做了非常全面的介绍,尤其对Caffe做了非常深入的剖析,是一本既探究caffe代码细节,又介绍深度学习可视化与比赛的书籍,是一本非常实用的深度学习入门及工具书籍,相信该书会对国内深度学习应用的普及产生至关重要的影响。
——孙佰贵 *资深算法工程师
这本书是国内*本在代码级别上全面剖析Caffe框架的指导书,同时也是一本真正的实战手册。
——辛淼 Caffe中国用户社区(CaffeCN)创始人
深度学习毫无疑问是当今IT行业*火热的词汇之一。作为NVIDIA负责高性能计算团队的负责人,我看到越来越多的公司在深度学习领域做着大量的投入。深度学习让我们有了更高的图像识别率,更准确的语音识别工具,有了alphaGo。而许多有志于在深度学习领域一展拳脚的研发人员,却苦于没有一本浅显易懂的的深度学习入门书籍,来引领他们开始使用深度神经网络这一强大的工具。本书以应用广泛的Caffe为切入点,深入地介绍了Caffe的使用及一些应用实例,可以让读者对深度学习应用的开发过程有一个非常直观的理解。好比学习一门新的编程语言*有效的手段就是编写几个例子程序一样,本书正可以作为深度学习研发人员的《21 天学通》手边书。
——赖俊杰,英伟达 高性能计算团队 技术经理
有两次标志性的事件让深度学习进入了大众视野。其中一件是谷歌大脑学会了“猫脸识别”,另外一件就是AlphaGo战胜了李世石。尤其是后者,借助李世石本身在围棋界巨大的影响力,深度学习彻底被大众所认知。人们惊呼,人工智能的时代要来临了吗?我本人认为,是的。伴随摩尔定律下计算机运算能力的大幅提升,人工智能在越来越多的领域找到了有价值的落脚点。这一代的机器学习工作者无疑是非常幸运的,一个注定伟大的时代等待着大家去探索。很高兴看到国内这么快就出现了这样一本深度学习的原创书籍,而更加难能可贵的是,本书内容还是来自于作者在阿里云进行深度学习一线工作的实战总结,相信此书可以帮助大家更好地进入这个日新月异的领域。
——谷文栋 推荐技术社区ReSysChina发起人
本书非常详细从深度学习的来龙去脉到caffe框架进行详细的讲解,并难能可贵的引入了底层算法(*化,深度网络前向传播,深度网络反向传播)介绍,为进一步深度奠定基础,是一本非常适合初学者的深度学习书籍。
——涂鸦科技技术总监柯都敏、涂鸦科技图像算法专家孙农海
评论
还没有评论。