资讯 人工智能开发者
此为临时链接,仅用于文章预览,将在时失效

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

作者:汪思颖 编辑:郭奕欣
2017/09/10 09:36

雷锋网AI科技评论按:作为谷歌AlphaGo背后的强大推动力,于2015年底开源的TensorFlow一经推出便受到极大关注。目前在所有机器学习框架中,如果它宣称使用普及率第二,没人敢说自己是第一。

虽说有谷歌的背书,社区好,资源多,但同学们在使用TensorFlow的过程中,常常会一不小心跳进坑里,严重影响体验。

近日一位同学就在知乎上提了一个问题【TensorFlow有哪些令人难以接受的地方?】,表达了TensorFlow在使用过程中的不便,顺便问了大家有没有什么更优雅的方法绕过那些坑。短短一个月的时间,该问题的浏览量已经达到10万+,关注者也达上千人。

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

作为问题的提出者,这位同学也试着抛砖引玉作了回答,他表示提出这个问题的初衷是希望引发大家对TF少一些盲目的推崇,多些理性的思考和进一步的讨论。而在全部42个回答中,雷锋网AI科技评论也总结了一些有意思的现象。

TensorFlow的“吐槽大会”

结合知乎上网友的回答,以及业内相关人士对TensorFlow的评价,AI科技评论整理了TensorFlow目前被“吐槽”频率比较高的一些问题。

综合看来,在使用TF的过程中,确实存在很多不够人性化的地方。不过,每个工具都不是完美的,虽说TF缺陷很多,但是对框架使用情况的统计数据最能说明问题,正所谓“TF虐我千万遍,我待TF如初恋”嘛。

TF普及率遥遥领先

下表为各个开源框架在GitHub上的数据统计(数据统计于 2017 年 9月 6 日),可以看到 TensorFlow 在 star 数量、fork 数量、contributor 数量这三个数据上都完胜其他对手。

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

此外,特斯拉AI负责人Andrej Karpathy2017年初通过分析过去五年arxiv上的论文数据,对比了各种深度学习框架的使用情况,看图说话:

下图是从2012年1月到2017年3月各框架的使用随时间的发展趋势。

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

下图对比了2017年3月在arxiv上提交的论文中提到深度学习框架的情况。

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

结合上面两张图,可以看到,自15年底谷歌开源TensorFlow以来,它的用户数增长稳定,而且一直处于高速的增长中,到17年3月,已经处于不可撼动的地位。(pytorch于2017年1月才开源,此处不做对比)

AI科技评论也总结了TensorFlow的几点优势。

而有意思的是,caffe作者贾扬清也在知乎上为TensorFlow正名。

他提到,TF是目前唯一一个在核心设计层面上支持dynamic control flow的框架,也是极少几个经历大规模多应用部署考验的框架之一。TensorFlow能直面实际应用中的限制条件,部署到真正核心的产品里面,它支持大规模推荐系统和移动端产品的部署,而这点对于很多框架来说没法实现。

“TF的确难,但是它给你提供了真正可以产品化的可能性。很多问题只看见一棵树的时候简单,看见森林的时候,解决方法就不一样了。”

细数完优点和缺点,问题来了。对于哪些实在忍受不了TensorFlow缺点的人,在考虑是否应该换个框架了。而对于那些还没入坑的同学,到底该用哪种框架?

当前主流框架大对比

主流框架的对比一直是个长期被讨论的话题,相关的帖子和文章也层出不穷。而在今年三月的斯坦福大学cs231n中,李飞飞、Justin Johnson和 Serena Yeung 也对当前几种主流框架进行了对比,并给出了建议。

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

此外,北大的吴秉哲同学在知乎上也给出了很好的解答,他之前用Pytorch,Tensorflow,Mxnet这三个模型都做过项目,认为应该根据自己的需求选择模型。

  • 在需要快速验证一下自己某些想法的时候,我一般会用Pytorch快速实现,而且Pytorch的底层计算的代码是C写的,并且和Torch共用一套底层计算代码,想要阅读原码并做定制化修改比较容易上手。

  • 在做一些数据量比较大的long term的训练的时候,我会用tensorflow,比如它提供的tensorboard的训练监督,还有自带的profiling和debug功能比较方便,还有个原因就是它可以很方便的把模型deploy到手机上,现在caffe2出来了,或许可以是一个比较好的替代。

  • 另外选择框架的时候还得参考一下你所做的项目,比如做person re id大多数的工作都是基于caffe修改的,这个时候需要考虑迁移这些工作到其他框架下时不时会遇到坑。

  • 如果做物体定位,Mxnet已经提供了一些操作的高效实现。

他还强调,“现在框架迭代得也越来越快,mxnet在近期推出gluon的接口,API仿照Pytorch设计。不久之后Tensorflow也会有相应的接口推出。”

总结

很多同学在实验过程中,总是对框架过多考虑。这个框架的速度怎么样?好用程度程度怎么样?为什么文档这么乱?为什么用起来这么不顺手?随之而来就是一系列的吐槽。而他们往往忽略了最关键的东西,框架只是个手段,重要的是你想解决的是什么问题,以及你解决问题的思路。

此处借用贾扬清一句话,“框架就是个框架,最终要能出活。”

雷锋网 AI科技评论。雷锋网。

长按图片保存图片,分享给好友或朋友圈

文档乱、调试难…TensorFlow有那么多缺点,但为何我们依然待它如初恋?

扫码查看文章

正在生成分享图...

取消
相关文章