C++模板元编程实战:一个深度学习框架的初步实现经典语录

简介: 元编程在深度学习框架中的实践与性能优化。

目      录

书名:C++模板元编程实战:一个深度学习框架的初步实现

作者:李伟 著

出版社:人民邮电出版社

出版时间:2018年10月

ISBN:9787115491701

字数:346.1千字

本书由人民邮电出版社有限公司授权得到APP电子版制作与发行

版权所有·侵权必究

著    李 伟

责任编辑 傅道坤

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 

读者服务热线:(010)81055410

反盗版热线:(010)81055315

本书以一个深度学习框架的初步实现为例,讨论如何在一个相对较大的项目中深入应用元编程,为系统性能优化提供更多的可能。

本书分为8章,前两章讨论了一些元编程与编译期计算的基本技术,后面6章则讨论了元编程在深度学习框架中的实际应用,涉及富类型与标签体系、表达式模板、复杂元函数的编写等多个主题,详尽地展示了如何将面向对象与元编程相结合以构造复杂系统。

本书适合具有一定C++基础的读者阅读。对主流深度学习框架的内核有一定了解的读者,也可以参考本书,对比使用元编程与编译期计算所实现的深度学习框架与主流的(主要基于面向对象所构造的)深度学习框架之间的差异。

半夜突然接到陈冀康先生发来的微信消息,希望我能给《C++模板元编程实战》写一个推荐序。由于我本人对C++模板元编程有非常浓厚的兴趣,外加以前只是略知深度学习的皮毛内容,从来没有系统学习过,所以想借此也开阔一下自己的视野,于是欣然接受了陈先生的邀请,然后就有了下面的文字。

学习编程是一个长期的过程,如果要快速提高自己的话,就需要走出自己的“舒适区”。只有不停地给自己找很多颇具难度,但又不至于难到写不出来的任务,然后利用时间逐个实现这些任务,自己的编程技能才能得到最快速的提高。本书中造的这个“深度学习框架”的轮子,就很适合读者自行尝试开发实现。尽管本书会提供源码下载地址,但是建议读者先别看源码,而是自己跟着书做一遍,把MetaNN实现出来。在成功或者放弃之后再去看作者的代码,相信会有更深刻的领悟。

在阅读本书的过程中,我把大部分时间都花在了前两章。这两章介绍的是C++模板元编程的技巧,作者写得非常出彩。第1章开篇就点出了读者应该如何去了理解模板元编程。想当初我在学习C++ Template Metaprogramming时就走过不少弯路——由于该书的讲解不够通俗易懂,外加当时经验欠缺,最后竟然是通过学习Haskell语言才彻底把C++模板元编程弄明白。如果当初看的是本书的第1章,相信会节省下很多时间。

从第2章开始,作者就已经是布置“大作业”了。而从第4章开始,则开始正式介绍使用C++模板元编程的技巧来实现MetaNN——也就是一个简单的深度学习框架——的过程。如果读者没有很好地理解前两章内容,则从第4章开始应该会觉得非常吃力。当然,这也不是坏事,起码这可以说明两点:自己技术水平确实有不足之处;本书中确实有真材实料,可以让自己学到很多干货。

需要多说一句的是,本书的技术难度相当大,读者最好具备一定的C++模板知识,而且也需了解C++ 11和C++ 14中的一些基本内容,以免在阅读本书时不停地查询相关资料,打断思路。退一步讲,即使各位读者已经学习过模板元编程,在阅读本书时也需要勤加思考,并踏实练习实践书中内容,从而切实提升编程技能。

最后想说的是,本书的代码还是写得相当不错,可能是作者在长期的编码工作中已经把C++的很多最佳实践都潜移默化成自己的本能了,所以没有花费很多笔墨来完整地介绍代码中各个方面的细节。大家在阅读本书的过程中,可以尝试思考一下,为什么作者要这样编写(而不是采用其他方式),以及书中的代码跟其他C++图书介绍的最佳实践有什么异同之处。这也是一种学习的过程。

版权:人民邮电出版社