【我不再使用TensorFlow的5大原因】谷歌最受欢迎深度学习框架日渐式微?

【新智元导读】一篇叫做“TensorFlow Sucks”的文章火了。上线不到两年便成为Github最受欢迎深度学习项目,谷歌开源深度学习框架TensorFlow,有人爱它,有人恨他,本文摘选了一些研究人员和开发者使用TF的感受——TensorFlow竟然这么难用?欢迎留下评论,分享你的使用经验。

最近网上出现了一篇叫做“TensorFlow Sucks”的文章,作者吐槽了谷歌的开源机器学习框架TensorFlow的各种缺点,主要是认为TensorFlow缺乏灵活性,在设计思想和使用上不便于快速原型部署,而且相关的库太过高级无法轻松使用。那篇文章的作者还使用PyTorch和Caffe作对比,认为后者在某些代码和调用方面比TF好很多。

“谷歌想要开发出一款让所有人都能使用的工具,但是它做出的这个产品似乎并不能让所有人都满意。”

这篇文章发布后引发了不小的反向,部分原因当然是TensorFlow庞大的用户群。Quora上也有相关的讨论。下面新智元做了摘译。

TensorFlow是一个高级却给人感觉低级的框架

以下是是Quora用户、来自挪威的数据科学家Håkon Hapnes Strand的回答:

我认为这篇文章很有趣,大部分内容都和我自己使用TensorFlow的经验相吻合。

我完全同意作者关于TensorFlow缺点的主要观点。这是一个高级却给人感觉低级的框架。理想情况下,你想要快速进行原型部署(rapid prototyping),同时在控制细粒度。但通常二者不可得兼。而在TensorFlow里,你是两者都得不到。

所以,你只能在TF上面使用API,比如Keras。但要是用户必须走调用API这条路,本身就说明框架有问题。TensorFlow静态图计算模型的主要卖点在于性能,但各种基准显示,一些其他的框架在保持语法更加简单的同时,实现了与TensorFlow同等的效果。

很明显,大家对谷歌的狂热偏好带来了TensorFlow的流行。在我看来,还有几个不错的深度学习框架。比如说CNTK就不比TensorFlow差。但由于品牌名称不够响亮,就不如TensorFlow流行。大多数研发人员会认为,谷歌做的一切都很创新、令人激动。此外,从营销角度看,“CNTK”名字不够好,而“TensorFlow”就很吸引人。

极度侧重图是最大的优点,也是最大的劣势

以下是来自用户Bohdan Khomtchouk的回答,Khomtchouk是斯坦福的博士后:

我认为TensorFlow极度侧重于图(graph)的这一点是其最大的优势,但也是最大的弱点。

优势在于系统能够适应很多优化,对于生产部署而言也是理想的选择(因为没有语言的运行时间,就是图)。这些事情对谷歌来说很重要,我相信,最终,对于大多数产业级的客户来说也很重要,因此我认为总体而言是很好的。

缺点则主要来自工作时的别扭——你不是在编写程序,而是在定义图。对此,有两种应对方法:

1)使用更高级的声明式API,比如Keras和TF Estimators。实际上大多数人都希望这样使用TensorFlow,所以是一个很好的方法。我相信,TF团队将很快开始将这些框架作为新用户上手TF的工具大力推广。

2)TensorFlow Eager Mode,这将为TensorFlow带来必需的逐行运算语义和动态图。这方面还没有很多细节,但是看GitHub(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python/eager)和StackOverflow(什么是TensorFlow Eager代码:https://stackoverflow.com/questions/45967895/what-is-tensorflow-eager-code-for),可以看出些究竟。在我看来,这是为了给研究人员(动态图)和学习者(能够编写更多命令式的程序)提供更多类似PyTorch的环境而开发的。

我认为,这些回应将是非常有效的,而且TensorFlow将继续保持其作为深度学习选择框架/基础设施的地位。

放下TensorFlow,过上美好生活

以下是来自用户、INRIA研究人员Ujjwal的回答:

坦白说,我同意文章中作者的大部分观点。他没有空穴来风,实际上是切中了要害。作为一名研究人员,我完全理解他的经历。

我花了很多时间用TensorFlow做了许多复杂工作(heavy stuff)。不是自夸,真的是很复杂的工作,而这也是对深度学习解决方案的真正考验。

使用CIFAR10,CIFAR100或MNIST这些数据集,任何深度学习库都可以表现出惊人的效果。但你在真实环境中遇到的问题要复杂得多得多得多。

真实场景很重要,在做研究的时候尤其重要。我们都希望很快出结果,有很高的灵活性。如果一个库灵活性不足,那它就不是一个好的库。就是这么简单。

以下是我不喜欢TensorFlowd的原因:

  • 缺乏良好的输入通道:只有TensorFlow的1.4预览版中有一些还算不错的输入通道。Dataset API现支持预抓取,这对于在训练或推理时提高GPU的通量有很大帮助。然而,这也同样容易导致系统进入锁定状态。此外,TF没有文档或案例来展示有效的输入通道。
  • 极度糟糕的社区:你需要用TensorFlow做一些事情。但看文档理解或者解决不了,所以你决定去Github。但当你一点开“New Issue”,首先看到的是一大堆说明,明确地警告你,“只有与开发相关的”问题才能在这里问,其他query都该用StackOverFlow。因为我们都是开源好用户,所以老老实实去了StackOverFlow,发了有深度的帖子。但是,你等啊等,等啊等,不会有回答出现。这样的事情已经发生过好几十次。要是你在Github上发一个issue,就会有人跑过来把你的帖子关掉,还不忘贴心提醒你,这个问题更加适合StackOverFlow。……我在那边问点有深度的问题,不会有任何回应。
  • 粗浅的使用:我不是要说谁,但我在现实生活中真的遇到了很多就是对TensorFlow爱爱爱不停的人。但是,每当我问他们一些深度问题的时候,他们都给我看些CIFAR10 /MNIST的代码。这就是我说的“粗浅的使用”(Shallow Usage)。这是一个危险的趋势。TensorFlow教程中的一切都很棒。但相信我,从大规模应用的角度看,一个都不好。
  • 迷弟泛滥:这个原因最蠢,没有人会承认。但很多人听到TensorFlow就兴奋,就因为名字上跟了个“Google”。这是很难理解,但这是一个事实。而谷歌已经利用了这种愚蠢的优势。
  • 缺少良好的保存和重用方法:如果你使用4个GPU进行模型训练,然后使用S aver.save() 保存模型,.meta文件将保存与每个GPU相对应的图。如果你的朋友需要很快用这个模型进行测试,除非他是一个知道所有内部细节的专家(注意,并没有明确的文档),否则他就没法用。我再次强调,这些东西只有当你去真正使用时才有体会。用一个GPU,或者你只想看到所有使用的GPU都感觉良好,那你可能永远都不会注意到这个重大的缺陷。

我还能说很多,但实在不想打字了。

任何有计算机科学基础知识的人都知道静态图效率高。但是,我都懒得跟那些认为静态图很灵活是很好用的方法的人争论。动态图很重要,因为它们提供了更高水平的灵活性,而灵活性在研究中是非常重要的。

API的改动更是别跟我提。在安装每个新版本之前,我想我以前的代码都来不及。

我已经不用TensorFlow了,将来也不会碰它。我的日子现在好多了。

原文链接:https://www.quora.com/What-do-people-think-of-the-TensorFlow-sucks-article

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2017-10-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习人工学weekly

机器学习人工学2018/1/7

新年快乐! 注意下面很多链接需要科学上网,无奈国情如此 1. Berkeley AI Research blog上发了篇文章讲physical advers...

39890
来自专栏PPV课数据科学社区

提前想好答案 数据分析师面试常见的77个问题

随着大数据概念的火热,数据科学家这一职位应时而出,那么成为数据科学家要满足什么条件?或许我们可以从国外的数据科学家面试问题中得到一些参考,下面是77个关于数据分...

45760
来自专栏AI科技大本营的专栏

回顾2016深度学习十大框架

我喜欢参加在西班牙马德里举办的机器学习见面会,也算是西班牙马德里TensorFlow小组和机器学习(Machine Learning)小组的常客,在自动无人驾驶...

396110
来自专栏量子位

Google把机器学习算法装进移动设备,让智能手表自动回消息

量子位 李林 | 参考Google Research Blog ? 你和小冰聊天,把各位好朋友的照片放进FaceApp改个性别加个灿烂笑容,靠的都是深度神经网络...

394110
来自专栏人工智能头条

声纹识别技术助力远程身份认证

32920
来自专栏大数据挖掘DT机器学习

【趣味】数据挖掘(2)——烤鸭 面饼之朴素关联

在”数据挖掘(1)——‘被打’与‘北大’的关联“中借有趣的实例介绍了关联规则的三度 (支持度、置信度,兴趣度)概念。为答博友,此文从原讲课PPT中...

33870
来自专栏大数据文摘

学习AI可能不需要那么多数学知识:20小时进阶计划

22550
来自专栏机器人网

仿人机器人的视觉伺服控制系统

 视觉是人类感知外界信息的重要手段,视觉伺服系统是机器人获取环境信息的关键组成部分。本文主要讨论仿人机器人BHR-1的视觉伺服系统。首先介绍机器人头部的视觉总体...

17030
来自专栏腾讯架构师的专栏

给 AI 换个“大动力小心脏”之通用 CNN 加速设计

基于 FPGA 的通用 CNN 加速设计,可以大大缩短 FPGA 开发周期,支持业务深度学习算法快速迭代;提供与GPU相媲美的计算性能,但拥有相较于 GPU 数...

1.8K20
来自专栏BestSDK

35个免费又实用的开源 AI 项目

1. ACT-R:ACT-R由卡内基·梅隆大学开发,它既是人类认知理论的名称,又是基于该理论的软件的名称。该软件基于Lisp,提供详细的说明文档。 链接:ht...

47980

扫码关注云+社区

领取腾讯云代金券