《白话深度学习与TensorFlow》——3.4 如何选择好的框架-阿里云开发者社区

开发者社区> 华章出版社> 正文

《白话深度学习与TensorFlow》——3.4 如何选择好的框架

简介: 本节书摘来自华章计算机《白话深度学习与TensorFlow》一书中的第3章,第3.4节,作者:高扬,卫峥著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 如何选择好的框架

作为计算模型来说,深度学习中的绝大部分基本理论早已沉淀成了固化的计算模块、函数或者算法包。就计算模型本身来说,框架之间的差别不会太大,也不可能太大,除非这个领域的理论层面得到了极大的突破,而且这个突破还是不同方向且掌握在个别组织手里的。而现在框架之间的差别主要出现在这几个地方。
第一,性能方面。
这一属性主要由底层的实现语言决定,底层运行比较快的仍旧是实现的语言。理论上说,运行速度最快的仍旧是C或C++一类,离着CPU指令近一些语言效率高一些。
笔者用过Torch、TensorFlow、Chainer、Caffe等多种框架,虽然没有经过系统地压测和对比以及时下流行的跑分测试,但仍然有个比较感性的感觉——相同情况下Torch运行的速度略快一些,而TensorFlow老实说确实不能算快的甚至是这几款里面比较慢的。不过笔者从来不觉得这是什么大问题,这种效率的差距仅仅是零点几倍或者一点几倍,而真正在工程实现方面的差距大多来自样本数量、网络设计等方面,这些方面的差距可能都是一两个数量级的(差10倍或者100倍),所以这种效率不是最重要的参考标志。
第二,社区活跃度。
这些开源的项目虽然多,但是社区活跃与否是个非常重要的因素,甚至几乎是首选的因素。活跃的社区意味着有更多的人正在使用这样一个项目,会有更多的人贡献代码,提交Bug,遇到错误你也很容易找到前人踩坑留下的垫坑石。因而做起项目来风险也相对比较小,学习起来进步也会快一些。
第三,语言。
这几乎是最不重要的一个方面,因为不管什么语言,实现的框架大多都会支持Python的“驱动”,或者我们称接口。当然也有很多比较执拗的框架只提供人家自己原生的接口,例如Torch只支持Lua脚本,CNTK只支持C++等。
说它不重要是因为,在这样一个应用场景中网络建立的逻辑比较有限,所以涉及的语法内容也非常有限,学习成本也不高,反正从逻辑和模型层面是没有差别的。
应该说TensorFlow在这些方面做得还都是令人满意的。首先它有着非常活跃的社区:www.tensorflow.org,主页的日均PV有40到50万之多。这对于一个小众化的技术网站已经是个不得了的数字了。
image

它的英文社区比中文社区活跃得多,而且在Stackoverflow上的问题讨论也非常多,目前有8000多个被跟帖的帖子,每天都会有不少新帖出来,所以在成功的路上你不会孤单。
image

语言嘛,Python肯定是首选,笔者大多是使用Python 2.7+ TensorFlow的方式来工作的,很方便。
性能就像我刚才所说的,虽然感觉上并不快,但是满足目前的工作已经足够了。而且这种数量级的效率提升是无法通过更换一个框架来实现的。
总体来说TensorFlow应该是所有深度学习框架中比较适合用来进行工程应用的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接