pythonic的典故_TensorFlow真正的问题是缺少官方指南和详细文档!一位PyTorch转TF2.0网友的真实故事...

【新智元导读】随着PyTorch逐渐成为增长最快的深度学习框架,尤其在深度学习研究中占据主导地位,许多从TensorFlow转PyTorch的研究人员表示“真香”。但从PyTorch转TensorFlow的感想是怎样的呢?今天一则Reddit热帖讨论了这个问题。你同意作者的观点吗?来新智元 AI 朋友圈和AI大咖一起讨论吧~

PyTorch已经成为增长最快的深度学习框架:

仅在 2019 年上半年,ArXiv 论文中 PyTorch 的引用量增长了 194%;PyTorch 平台的贡献者数量比去年增长了 50% 以上,达到近 1200 人。

一个更近期的数据是:

NeurIPS 2019使用的机器学习框架:PyTorch 68-> 166,TensorFlow 91-> 74

NeurIPS19论文使用的深度学习框架中,超过69%提到了PyTorch。不仅NeurIPS,PyTorch在深度学习研究的其他顶会,包括ML、CV、NLP等领域的主要会议中都占据了主导地位。

可见,PyTorch 正在快速增长,尤其在学术圈中地位飙升,大有取代 “老大哥” TensorFlow,成为机器学习框架 No. 1 的势头。过去两年我一直使用Keras/TF,直到最近我才改用PyTorch。现在我真的很喜欢PyTorch,我觉得它更简洁明了。只是我个人的看法。我使用Tensorflow/Keras已经有一段时间了。我记得的结论是,Tensorflow在生产部署方面更出色,PyTorch在研究中表现更好。我最近开始使用PyTorch,不得不说我真的很喜欢它,感觉它更“pythonic”。此外,通过诸如ONNX之类的框架,部署(众所周知的模型)也开始变得不成问题。两者我都会继续使用。

从Reddit网友的评论来看,从TensorFlow转PyTorch的研究人员往往有“真香”之感,但从PyTorch转TensorFlow怎样呢?

今天,Reddit机器学习论坛上出现一则帖子引起热议:

我从PyTorch切换到TF 2.0,我的看法是,TensorFlow库本身没有太大的问题(我听过很多关于TF的抱怨),真正的问题是缺少官方指南、详细的文档,以及TensorFlow团队缺少对社区问题的回答。

从PyTorch转TensorFlow后,没有人回答我的问题

帖主DisastrousProgrammer描述了他从PyTorch转到TensorFlow后的无所适从——遇到问题搜索不到答案。他写道:

我觉得我在尝试创建的应该是一些TensorFlow用户相当常见的pipeline。似乎每件事都有多种方法可以实现,每一种方法都有各自的细微差别,而这些细微差别在任何地方都没有正式的文档记录。你必须深入挖掘他们的GitHub issues,幸运的话,有时会在那里找到信息。

TensorFlow还有许多非官方的medium博客,但我注意到它们经常包含不准确的信息。很多时候,那些博客不过是承包商制作的营销材料。

我用Google搜索问题,指引我点开的是stackoverflow上几个月甚至一年前提出的没有人回答的问题。我认为这是最简单的方法。这些未解决的问题种有很多都是好问题,TensorFlow的官方文档都没有涉及这些问题。

我看了看这两个框架的零回答问题。Pytorch有2101个,Tensorflow有24066个。

另一方面,Pytorch有一个论坛,在那里你可以经常得到Pytorch开发团队的回答。

我听过很多关于Tensorflow的抱怨,但我个人并不认为它的结构本身很差。我认为它实际上是相当好的,但是如果你没有足够的信息让人们最好地使用它,那么创建一些很棒的东西出来又有什么意义呢?

我从未遇见过真正更喜欢Tensorflow而不是PyTorch的人

这则帖子一下子引起大家的关注,有人深有同感,yusuf-bengio分享了自己的故事:使用TensorFlow的5步经验:

1、我想到一个idea;在训练过程中逐渐改变一个损失函数的“形状”2、我用Google搜索“tensorflow 训练中改变损失函数”

3、最顶部的结果是一篇medium文章,我点开了它4、这篇medium文章介绍了“均方误差”损失,以及如何使用它来在TensorFlow上训练“深层神经网络”

5、我把头撞在键盘上

他表示:TensorFlow的一个主要问题是生态系统,就是说,博客文章、stackoverflow上的答案,以及code repos,仍然主要是针对TF 1.x的。

当我有关于TF 2.0的问题时,我经常做的是:在搜索查询中将“tensorflow”替换为“keras”,更有可能找到最佳答案。

直接查看TF 2.0源代码

这两个都不是用户友好的寻求帮助的选择。

Reddit网友netw0rkf10w也深有体会,不过TF团队的快速反馈让他感到安慰:在过去的两个月里,我一直在用TF 2.0做一个项目,遇到了很多挫折,主要是由于bug、文档不清晰和缺少功能。TensorFlow还有很长的路要走,不仅是代码,还有文档和支持。目前PyTorch在所有这些方面都做得更好。

然而,我可以看到TF团队已经为改善这个库做出了很大的努力。在我抱怨TF模型保存/加载机制非常糟糕(就用户体验而言)之后,他们团队的两名经理联系我,询问反馈。非常感谢,这也是我继续使用TensorFlow的主要原因之一。

从Reddit评论来看,许多人认为TensorFlow“难用、难学”:

4138:我同意你的看法。在TensorFlow刚发布那个时期,学习TF是相当容易的(官方网站上的教程就很好)。Keras出现后,就变成经典TF和Keras混在一起的半吊子指南了。要学习如何使用常规TF层是不可能的,除非查看旧的repos等等。这就是我转向PyTorch的原因。

mexiKobe:我觉得TF简直就是一团糟。TF与Keras合并也没有太大帮助。

显然,eager execution是正确的方向,现在TF变得越来越像Pytorch了,而不是相反。在这一点上,关于选择TF的主要论据就是它很流行。但坦率地说,Pytorch更好。

drsxr:同意。功能是一样的,但API调用有微妙的更改,并且试图找出更改是什么涉及大量的代码重写!

我有点感觉TF 2.0是谷歌的专有产品,他们将在内部使用,尽管它是开源的(没有文档+开源=??不是真正的开源。)

考虑到有多少人以开源的方式为TensorFlow的早期版本做出了贡献,这真是一记耳光,我真的不希望变成这样。

也许商业模式是让一切都通过GCP(谷歌云平台)运行,用一个简单的链式应用方法来做事情。这至少是我在参加GCP开发者大会时得到的印象。

seraschka针对“两个框架的零回答问题,Pytorch有2101个,Tensorflow有24066个”这个问题表示:我认为这可能是由于问题数量导致的,例如,未回答/已回答的比例作为衡量标准可能更能提供信息。除了框架本身流行外,我认为Tf在StackOverflow上有更多问题,因为我记得TensorFlow没有像https://discuss.pytorch.org这样的专门讨论的论坛,官方建议在StackOverflow上发布问题-不确定他们现在是否仍然这样建议。

无论如何,尽管看起来他们稍微完善了TF文档并增加了评级和更轻松地提供反馈的方式,但我认为文档的问题不在于文档本身,而在于框架太凌乱,以至于写得很好的书面文档都会令人困惑。

当然了,TensorFlow仍然很受欢迎,起码在生产环境被大量使用。但有没有人真正喜欢TensorFlow而不是PyTorch的呢?似乎没有,lqstuart说:我从未遇见过真正更喜欢Tensorflow而不是PyTorch的人,我也从未遇到过知道如何在生产中使用PyTorch的人。所以,在工作中,我和团队使用的是Tensorflow。

这个库可以说相当糟糕。应该有人见过 "tf.slim," "tf.lite," "tf.keras," “tf.contrib.layers”和"tf.train.estimator"全在同一个地方吧。当我看到这种重复的功能和糟糕的文档时,我觉得这是组织/领导的问题。

最后,有人对帖主问道:你究竟为什么要从Pytorch切换到TF 2.0?这是真正的问题。我们现在用TF 1.0上,会尽可能地坚持下去,然后可能会切换到Pytorch。

我猜是“这山望着那山高”。尽管粗略地搜索一下就会发现TF2.0不过是一片荒芜之地,到处是迷失的灵魂和破碎的幻想。

在我看来,TF在生产和移动等模型部署的生态系统要成熟得多。诚然,最初发布的pytorch jit的缺陷可能极大地影响了这种观点;现在情况可能已经有所改善。

参考链接:https://www.reddit.com/r/MachineLearning/comments/e4pxqp/d_ive_been_switching_over_from_pytorch_to_tf_20/​www.reddit.com

你可能感兴趣的:(pythonic的典故)