2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?

链接:https://www.zhihu.com/question/452749603

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

作者:思想火龙果

https://www.zhihu.com/question/452749603/answer/1819357374

pytorch统治学术圈。现在各大顶会开源代码没有一丝丝的tensorflow2.x,就连谷歌家自己的论文也是只有torch和jax。零零星星一些tf1的开源代码。

tensorflow2.x难用吗?真不难用的,基本就是在用keras,tf.data pipeline 和 tf.distribute 用起来真的省心又快。问题就是现在tf2没人用啊,也不是不好用,就是你有的pytorch也有,pytorch用得已经好好的了为啥还要换呢?然后你又再搞一个新库,jax,而且还是用tensorflow写的,而且还不是像keras,sonet一样能跟tf混着用的  ,然后google research开源代码要不是pytorch就是jax,连自家都不用别人会用么。

谷歌真的挺迷惑的,把keras合并了不去好好搞keras推广keras,可能再过两年 import tensorflow as tf 直接报warning “tensorflow is deprecated, please use pytorch instead”

作者:小小将
https://www.zhihu.com/question/452749603/answer/1822694849

变化太大了,今年面试的实习生,当问他们常用的深度学习框架时,他们清一色的选择了:PyTorch。

我个人认为几个原因导致地位逆转:

(1)PyTorch的易用性更好(当一个框架本身能衍生很多上层框架时,你就能知道它本身是多么不友好了,说的就是TF),而且生态已经起来了,大部分论文开源都是用PyTorch;

(2)TF2看起来并不太成功,反而破坏TF1的生态。TF1和TF2往往混杂在一起,让人摸不着头脑。

(3)关于大家最担心的部署优化问题,其实目前PyTorch也在不断提升这块的劣势,目前Torch->ONNX->TensorRT已经相对成熟了,其他的端侧框架如ncnn也支持torch了。当然动态图比静态图确实要多踩一点坑,但带来的可能是模型迭代效率的提升。

(4)关于分布式训练,TensorFlow可能优势更大,但可能大部分人最多跑个单机多卡就够了,所以性能上不会差距太大,而且分布式训练还有很多第三方框架来支持比如horovod。而且本身PyTorch自带的DDP也不差。

其实我从16年开始接触深度学习,最早学习的框架是theano,当TensorFlow出来后,theano的使用者就慢慢转向了TensorFlow,到19年我又开始转向PyTorch。每次转变后,我只能说一句话:真香。

声明:我的观察只限于在比较卷的CV领域。

作者:夕风Twilighty
https://www.zhihu.com/question/452749603/answer/1823164065

全球范围看,经过16-19年这三年的发展,PyTorch在学术圈的「垄断」地位基本已经站稳。这一方面得益于PyTorch一开始主打的动态建图,便于实验室的学生们快速迭代模型,试验想法是否work;另一方面也来自于PyTorch吸收了TF 1.x版本中的某些优点,doc做的也不错,便于初次接触机器学习和深度学习的新人上手,这一点的重要性往往容易被忽视。

TensorFlow在国内目前处在一个相对尴尬的境地,TF 1.x系列面世较早,2015年以及之前就深耕深度学习的程序员和在校同学,大部分用框架时都会从TF(与TF的雏形,即更早的theano)入手。因此在学术界、工业界都有很深的积淀,工业界由于项目更「重」,牵一发而动全身(或者应该说屎山太多),因此目前很多项目仍然停留在TF 1.x(1.1x)上面。因此要说TF快凉了,也不客观。但TF目前面临一个比较尴尬的问题,Google强推TF 2.0版本,但TF 1.x和2.0版本之间的API差异实在不小,导致doc的阅读成本和版本适配成本都相当高。

至于学术界,PyTorch在国内学校也广受欢迎,TF 2.0我知道有一小部分实验室在用。但总的来说 TF 2.0在这方面相对于PyTorch确实没有优势,实验室刷metric的场景下,大家也基本没有太多机会发挥出TF在分布式上的一些buff。而与此同时,PyTorch的生态建构肉眼可见地渐入佳境,TorchVision和TorchText两个库都做的相当漂亮,整体Pipeline的舒适度谁用谁知道。TensorFlow显然也明白自己要补齐什么短板,Keras可以认为就是这样的尝试吧,但Keras的封装做的让人感觉总差点味道。至于MXNet、PaddlePaddle之流,在国内的「市场」确实很小。PyTorch目前的确在蚕食TF的天地,如果在模型部署方面有更稳健的突破(包括对底层C++的某些开放和优化),那么TF确实要做出一些大的改变来应对了。

作者:李睿昕
https://www.zhihu.com/question/452749603/answer/1823046636

你最爱的tensorflow大概也许早就凉了:)

从工作中可以感受到不管是领导,客户还是竞争对手,对于Pytorch的关注度都远超tf。

Pytorch的生态会像滚雪球一样越做越大。

只要用的人多,不管Pytorch有多少坑和问题(性能,部署,...),大家总会想办法改进或者找各种各样的workaround。

至于tf,就跑跑老代码吧。


作者:一直在发呆
https://www.zhihu.com/question/452749603/answer/1825785017

个框架越来越一致,api用法参数设计等等,不得不说如果不考虑工业部署,我觉得还是pytorch好用,但我唯一一个觉得比较烦的一点是pytorch默认是BCHW,但是有些function写的就很迷惑人,比如grid_sample,输入tensor是BCHW,但是那个grid反而是BHWC,不明白为什么这样设计,统一保持为BHWC不好么?

作者:Byron
https://www.zhihu.com/question/452749603/answer/1824893139

工业界的基本盘还是性价比,PyTorch 好写归好写,性能优化那叫一个难做,谁搞谁知道

希望学术圈的各位能用最爱的 PyTorch 吊打工业界的基本盘,做出来跑得快精度好适用范围广的牛逼算法,而不是执着于每天打比赛 SOTA 又刷几个点。。。

现在的 GPU 那叫一个贵,业务没收益真的经不起造啊

作者:大口哥
https://www.zhihu.com/question/452749603/answer/1826489402

TensorFlow2挺好用的啊。

可能是我用的比较简单(高校,深度学习应用在纳米光子器件设计上),主要就是自己搭建FCNN,CNN,RNN,感觉TensorFlow2和Pytorch差不多。TensorFlow2用起来也同样很方便,模型的保存,调用也都很简单,总之并没有感到难操作。不过Pytorch有点爽的就是可以直接调用Transformer。

作者:IRENE羊
https://www.zhihu.com/question/452749603/answer/1823729349

我是深度学习小白,代码能力一塌糊涂,没有注释和百度基本没法读代码,选来选去还是选的pytorch入手学习,一个是学习资料多,另一个tensorflow自己还有1.x 2.x这种版本,他俩差别还不小,导致很多现成的1.x学习资料没法很好的移植过来学习,很麻烦,初学者用tensorflow实在不够友好。

偏题倒倒自己的苦水,代码不就是和机器说话吗,类似你给一只狗口令:“坐下,绕这棵树跑3圈,当我把飞碟扔出去以后你要把飞碟捡回来”,只不过英语代码对我们来说不是母语看起来还要一个转换的过程,这是我比较烦的,虽然我知道那个单词的意思,但是多这么一步translate我总觉得别扭,不想学,也很痛苦,并且我并不觉得编程那么那么重要,学习编程的过程让我有种回到中学小镇做题家的感觉,反正就是不对劲吧,说不上哪不对劲,反正没有学习数学物理化学那种醍醐灌顶的感觉,要不说编程是工具不是科学呢,但算法算是广义数学的一种。啥时候中国人也能发明一种和机器沟通的语言,让我能用中文指挥他干活就好了,我花了太多精力在学习怎么和电脑沟通上,有点反智。这么一提狗都比电脑聪明多了,狗都能自适应主人的语言,实际上学习的本质是什么?思维的世界怎么可能只有0和1?不解决这个问题就没办法撕掉深度学习伪科学的标签。生物为了处理更多样的信息牺牲了运行速度,我们把运行速度无限提升以为在接近学习的本质,我不知道这是否科学。

我只知道学习编程的过程非常枯燥,没有发现世界的快乐,深度学习框架也很无聊,把各种层连到一起,搬砖真形象。

要搬砖就好好搬,应该像word一样让全世界的人都可以无痛搬砖,分享智慧。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?_第1张图片

你可能感兴趣的:(人工智能,编程语言,java,深度学习,deep,learning)