多种网盘链接检测插件 购买前,请先检测网盘链接是否有效
20---C ģ??Ԫ????ʵսһ??????ѧϰ???ܵij???ʵ??_?????ʵ???????;??1??(2018??11??1??)_zz030717_1
20---C ģ??Ԫ????ʵսһ??????ѧϰ???ܵij???ʵ??_?????ʵ???????;??1??(2018??11??1??)_zz030717_2
20---C ģ??Ԫ????ʵսһ??????ѧϰ???ܵij???ʵ??_?????ʵ???????;??1??(2018??11??1??)_zz030717_3
内容简介:
图书在版编目(CIP)数据
若根子
元编程实:一个深度学习框架的初步实现
北京:人民邮电出版社,2018.11
BN9787-115-49170-1
①C…Ⅱ.①Li…Ⅲ.①C+语言一程序设计
Ⅳ.①TP312.8
中guo版本图书馆CIP数据核字(2018)第192130号
内容提要
本书以一个深度学习框架的初步实现为例,讨论如何在一个相对较大的项目中深入应用元编程
为系统性能优化提供更多的可能
本书分为8章,前两章讨论了一些元编程与编译期计算的基本技术,后面6章则讨论了元编程在
深度学习框架中的实际应用,涉及富类型与标签体系、表达式模板、复杂元函数的编写等多个主题
详尽地展示了如何将面向对象与元编程相结合以构造复杂系统
本书适合具有一定C+基础的读者阗读。对主流深度学习框架的内核有一定了解的读者,也可以
参考本书,对比使用元繃程与编译期计算所实现的深度学习框架与主流的(主要基于面向对象所构造
的)深度学习框架之间的差异
Li伟
责任编辑Fu道坤
责任印制焦志炜
◆人民邮电出版社出版发行北京市丰台区成寿寺路11号
编100164电子件31@ ss, comen
网址Mttp/www.ppxess.omcn
固安县铭成印刷有限公司印刷
印张:185
2018年11月第1版
印数:1-2000册
2018年11月河北第1次印刷
定价;6.00元
者服务热线010)81055410印装质量热线010)81055316
反盗版热线010)81055315
广告经营许可证:京东工商广登字20170147号
推荐序1
半夜突然接到Chen冀康先生发来的微 信消息,希望我能给《C艹+模板元编程实战》写
个推荐序。由于我本人对C++模板元编程有非常浓厚的兴趣,外加以前只是略知深度学习
的皮毛内容,从来没有系统学习过,所以想借此也开阔一下自己的视野,于是欣然接受了
Chen先生的邀请,然后就有了下面的
学习编程是一个长期的过程,如果要快速提高自己的话,就需要走出自己的“舒适区”
只有不停地给自己找很多颇具难度,但又不至于难到写不出来的任务,然后利用时间逐个
实现这些任务,自己的编程技能才能得到最快速的提高。本书中造的这个“深度学习框架”
的轮子,就很适合读者自行尝试开发实现。尽管本书会提供源码下载地址,但是建议读者
先别看源码,而是自己跟着书做一遍,把 MetaNN实现出来。在成功或者放弃之后再去看
作者的代码,相信会有更深刻的领悟
在阅读本书的过程中,我把大部分时间都花在了前两章。这两章介绍的是C++模板元
编程的技巧,作者写得非常出彩。第1章开篇就点出了读者应该如何去了理解模板元编程
想当初我在学习C++ Template Metaprogramming时就走过不少弯路—由于该书的讲解不
够通俗易懂,外加当吋经验欠缺,最后竟然是通过学习 Haskell 1语言才彻底把C++模板元编
程弄明白。如果当初看的是本书的第1章,相信会节省下很多时间
从第2章开始,作者就已经是布置“大作业”了。而从第4章开始,则开始正式介绍
使用C++模板元编程的技巧来实现 MetaN—一也就是一个简单的深度学习框架—一的过
程。如果读者没有很好地理解前两章内容,则从第4章开始应该会觉得非常吃力。当然,
这也不是坏事,起码这可以说明两点:自己技术水平确实有不足之处;本书中确实有真材
实料,可以让自己学到很多干货。
需要多说一句的是,本书的技术难度相当大,读者最好具备一定的C++模板知识,而
且也需了解C++11和C++14中的一些基本内容,以免在阅读本书时不停地查询相关资料
打断思路。退一步讲,即使各位读者已经学习过模板元编程,在阅读本书时也需要勤加思
考,并踏实练习实践书中内容,从而切实提升编程技能
最后想说的是,本书的代码还是写得相当不错,可能是作者在长期的编码工作中已经
把C+的很多最佳实践都潜移默化成自己的本能了,所以没有花费很多笔墨来完整地介绍
代码中各个方面的细节。大家在阅读本书的过程中,可以尝试思考一下,为什么作者要这
样编写(而不是采用其他方式),以及书中的代码跟其他C++图书介绍的最佳实践有什么异
同之处。这也是一种学习的过程
学而不思则罔,思而不学则殆。预祝各位读者阅读愉快,获益匪浅。
Chen梓瀚(vczh)
2018年9月
推荐序2
模板元编程( Template Metaprogramming)从来都是C++程序设计中被多数人视为畏途
的领域。类型设计本就是具备丰富经验的工程师才能操刀的活计,C艹+语言之所以强大
个重要的原因就是它具有强类型( strongly typed)特性。有了这样的特性以后,开发人
员就能在編译期实施种类繁多的静态检査,从而把很多澘在的软件缺陷尽早地暴露,避免
它们到链接期甚至运行期才兴风作浪。但反过来,类型设计中的任何缺陷都会把原罪带给
该类型的所有对象,甚至该类型各级派生类型的所有对象。而且,软件一旦上线,一旦分
发到用户手里,再要修改,谈何容易!所以,类型设计,尤其是大型软件中的基础类型设
计,对工程师的要求已经很有挑战。而模板元编程,则在此基础之上更进一阶。如果说负
责类型设计的工程师,他们的产品是对象和对象的运算;那么,负责模板元编程的工程师,
他们的产品就是类型和类型的运算,即前者的上游。对于绝大多数的C+开发人员来说
能够自如地使用对象已非易事。而能够不仅设计类型,还要根据需要自如地产生和剪裁所
需要的类型,而且还得把这种能力作为一种服务提供出来,让其他工程师使用,这里面的
功夫之深可想而知。所以,虽然关于C+语言的图书汗牛充栋,但是讲解模板元编程的却
是寥若晨星。即便是以此为主题的图书,也基本上是就事论事,这不免让读者产生疑问:
模板元编程确实厉害,但是这和我的ri常工作有何关系?这难道不应该是C++标准委员会
中那些头发稀少的专家们的玩具吗?
看到这本《C艹模板元编程实战》书名的最后二字,我眼前一亮。模板元编程、深度
学习框架,还是实战,这几个关键词,已经有了致命的吸引力
怍为一名C艹+资深爱好者,我可以清楚地感觉本书的质量和份量。从第一行代码开始,
本书就是采用现代C++标准。可以说,作者是直接从现代C++开始学习和掌握C++的新生
代工程师,身上绝少来自“C++远古时代”的Chen腐气息,至今还在C++社区中纠缠不清的
很多语法问题,在本书中根本就不是问题—C+就是现代C++,当然应该使用 constexpr
当然应该使用auto,当然应该使用别名声
本书以明快、详尽的风格,集中演示了在现代C艹中进行模板元编程的必要技巧。现
C++为工程师提供了很多必要的工具,使得模板元编程能够以更直接和清晰的方式来表
达生成类型的算法,本书的前几章给出了如何高效利用这些工具的指南。但是本书远未停
留在那里,因为全书的重点在于实战二字
推荐序2
作者通过构造一个功能全面、强大的 MetaNN深度学习框架,展示了模板元编程是如
何从类型层面进行深度学习涉及的具体数据和操作的设计,这种设计是分层递进的:先引
人基本的可定制的数据结构模板和策略,再设计以这些数据模板为基础的算法模板,尔后
在数据和算法之上,构建深度学习的业务逻辑。这一部分内容虽然篇幅较大,但是读起来
不累,因为讲解的每个知识点都是已经系统讲解过的语言要点的呼应和深化。非常可贵的
是,这些内容切切实实地给到读者这样的信息:模板元编程在实战中是确实有用的,而且
很多时候是非用不可的。本书每一章后面还跟着若干练习,启发读者的进一步思考。有的
习题会让读者从多个侧面考虑如何进一步利用模板元编程的高阶用法,从另外的维度拓展
深度学习业务,还有些习题会提示读者某些话言特性可以应用的其他行业领域。
在现代C++和深度学习都炙手可热的今天,有这样一本由真正的一线专家撰写的精良
作品,对读者来说是一种幸福。本书对于读者的预备知识要求并不多,因为书中介绍得足
够详尽。只要有一颗愿意学习的心,就能够很好地冋时掌握现代C++和深度学习这两门能
够为你带来巨大技术优势的学问
谨向广大读者隆重推荐这本《C++模板元编程实战》
高博,《C+覆辙录》、《 Effective Modern C+中文版》译者
2018年10月,新加坡, Tanjong Pagar
推荐序3
C++模板元编程的实质是编译期计算。这种编程范式的发现是一个意外,其编程风格
对于音通C艹程序员而言非常陌生。习惯了运行期编程思维的程序员很难理解和适应这种
编程范式——模板元编程代码就像使用C艹+之外的某种语言写的天书
C++模板元编程与模板编程的关系,有点像深度学习与机器学习之间的关系,前者都
是后者的一个子领域。不同的是,C艹模板元编程要比深度学习偏门多了,尤其在模板元
编程实战领域,对于guo内C+社群来说,可以说是人迹罕至之地
迄今为止,有三本图书比较认真地涉及了模板元编程领域,分别是《C++模板元编程》
《C+ Templates中文版》和《产生式编程》.它们都是guo外C+技术专家写作的。因此
Li伟先生撰写的这本《C艹+模板元编程实战》是guo内第一部以模板元编程为主题的作品
眼整个C++社群这都是屈指可数的
本书涉及的两个主题都非常吸引人。对我个人而言,模板元编程是长久以来的兴趣点,
深度学习则属于负责的专业课程范围。我很荣幸成为本书最早的读者之一。拜读大作,受
益匪浅
作者首先使用C++11之后的新语言特性重新实现了一些基本的元编程技术,然后介绍
了以模板元编程技术为主实现的可扩展深度学习框架 Metal。本书整体结构简单合理
论述深人清晰,这不仅与作者的教育背景和硏发经历有关,更能看出他对模板编程和模板
元编程技术超乎常人的热情,以及强劲的逻辑思维能力
本书必然会成为C++狂热爱好者的案头读物。它还可以让其他C++程序员明白,除了
熟悉的C艹编程,还有C++模板元编程平行世界的存在。那个世界的实战更精彩
祝阅读愉快!
荣耀博士
2018年9月,南京大行宫
|