Pytorch和Tensorflow,谁会笑到最后?-程序员宅基地

作者 | 土豆变成泥

来源 | 知秋路(ID:gh_4a538bd95663)

【导读】作为谷歌tensorflow某项目的Contributor,已经迅速弃坑转向Pytorch。目前Tensorflow还没有被Pytorch比下去,但之后极大概率被比下去。

01 在学术界Pytorch已经超越Tensorflow

Pytorch因其简单易上手,目前已经被广大Researcher所使用。

深度学习论文Pytorch框架使用比例

从2018年的10%左右,飙升到今年的80%,只要不一顿操作猛如虎,Pytorch在学术界称霸已成定局。

道理很简单,Research的目的是快速实现、验证自己的想法,而不太注重兼容、部署等问题,因此多数人奉行“怎么快怎么来”的策略;同样,只有能够快速验证自己idea的Researcher才能不被实现而耽误太多时间,更有机会发好的论文。

因此,学术界Pytorch未来会一枝独秀。

02 在工业界Tensorflow依旧无可取代

工业界更注重部署,而Tensorflow的生态更有利于快速部署。

以Nvidia支持的TensorRT为例子,与Pytorch相比,英伟达官方不仅是是支持了Tensorflow,而且给出了多种模型的基于TensorRT的多版本模型,除此之外,还给出了不同模型在最常用的嵌入式板子TX2上的算法测试时间。

所以,如果作为一个工程人员,为了更快速给出方案、更快速跑通流程、更快速完成任务,最好的方式就是在现有的生态基础上,进行算法组合和调优,以满足特定任务。

而如果采用部署生态尚不成熟的Pytorch,可能遇到目前TensorRT不支持某些操作、TensorRT的优化没达到Tensorflow的水平,甚至出了一些莫名其妙的Bug然后花了好几天才解出来甚至解不出来。

所以,目前的部署生态,Tensorflow要比Pytorch老练很多。

03 未来,Tensorflow无法打入学术界

从Pytorch2018年的10%飙升到80%这一趋势来看,Tensorfow未来是无法打入学术界的,并且后续占据的份额会更少。一个失了人心的框架,想力挽狂澜的再找回人心,比重新开始还要艰难。

除此之外,Tensorflow 2.0更值得令人批判,如果图它的Eager模式,我为何不使用Pytorch?图它的历史包袱吗?都是动态图,Pytorch清晰明了简洁,也没有那么多老旧历史需要绕道。而使用Tensorflow时候,总是一不小心就发现还是绕回了原来的旧版本上。

04 未来,Tensorflow可能也会失掉工业界

Tensorflow在工业界的地位,也没有那么牢固,因为生态总归是人构建的。

当学术界疯狂扑入Pytorch,对新模型的适配等工作,自然会倾向于Pytorch了。

有些项目做了Pytorch转Tensorflow的工具,到时候难道Tensorflow,就只用来部署了?

05 Tensorflow的劣势

Tensorflow静态图虽说上手难了点,但这并非1.x版本不好用的主要原因。Tensorflow 1.x不好用的主要原因在于API混乱。

tf.nn中算是基本操作,可tf.layer、tf.keras、还有tf.contrib里面一坨东西tf.contrib.layer、slim等等,这么多冗余的Module,其实都只是基本的神经网络层,contrib里面额外有一些特殊的。

可是这种冗余极大降低了Tensorflow的生态质量。有的人习惯用tf.layer,有的喜欢nn,官方还一直用slim,不少人也用tf.contrib里面的很多东西。这种混乱使得Tensorflow的生态用起来并没有那么容易。

记得刚用tensorflow不久时候,对contrib里面的东西了解也不多。突然看代码遇到slim这东西,感觉简直了。谷歌官方的代码里,明明就一个MobileNet,就不能不用contrib里面的东西么?我就不知道有什么骚操作需要用到这里的东西,说好的contrib里面的东西不稳定呢?不稳定还总是用。

到了Tensorflow 2.0后,情况并没有好转。

为了兼容1.x,谷歌也是想方设法的搞。可是,2.x的生态其实连Pytorch的车尾灯都看不到。图个啥?图时不时发觉还是1.x的生态好?

还不如坚守静态图,然后好好梳理一下自己的API!

06 总结

Pytorch依旧上升,而tensorflow的混乱会使得tensorflow会优势渐失,倒向动态图的tensorflow,只会加速自己的消亡。

所以,对于要入坑神经网络的小白,直接扑向Pytorch不要回头;

对于已经在使用Pytorch的,不要心心念念想着Tensorflow,这不是一个香饽饽;

对于已经在Tensorflow浅坑里的,建议马上转向Pytorch,因为你会Tensorflow再学会Pytorch,一周就够了;

对于已经在Tensorflow坑底的,那一定是很大很大的大佬了,框架对你来说已经不是束缚了。

框架是死的,人是活的。两个框架各有千秋,只是Pytorch更有前景。

选择最有前景的,才是最理智的,不要49年入国军。

(*本文为AI科技大本营转载文章,转载联系原作者)

精彩公开课

推荐阅读

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/103692317

智能推荐

高级信息系统项目管理师—论文—进度管理_信息系统集成项目管理工程师高级论文-程序员宅基地

文章浏览阅读9.6k次,点赞7次,收藏35次。摘要:2015年3月,我作为项目经理参与了某公司与XX市交通运输局的道路交通智能监控抓拍系统的建设工作。我作为项目经理,主要进行了需求分析、系统设计、项目管理等工作。我十分重视项目的进度管理,运行丰富的项目管理经验,结合进度管理理论,对项目的各阶段进行了进度管理:规划进度管理、定义活动、估算活动顺序、估算活动资源、估算活动持续时间、制定进度计划、控制项目进度等过程全面展开对沟通的管控。依照项目管理..._信息系统集成项目管理工程师高级论文

java Lambda-程序员宅基地

文章浏览阅读317次。 https://www.cnblogs.com/heimianshusheng/p/5663913.html

UI设计师未来职业规划_ui设计未来工作期望-程序员宅基地

文章浏览阅读1.7k次。  近几年UI设计行业一直都比较火,不少其他行业的设计师都转行UI设计。这时候可能就会有小伙伴问未来职业规范怎么做才能脱颖而出呢?今天胡老师和大家来探讨一下。  现在的UI设计的市场需求和刚兴起那会截然不同,那时只要会设计图标简单的界面就可以找到一份很不错工作。而且薪资也比较可观。因此UI设计瞬间爆火,还有很多设计同行也分分转战UI设计。这个职位的特点,一定是指数型的,好的人会越来越好,一般的人面对的门槛则会提高。其实任何行业和职业都是这样的,只不过在互联网的设计师、工程师(以及其他职位)中,尤其明显。_ui设计未来工作期望

【前端】从零开始读懂Web3_web3 csdn-程序员宅基地

文章浏览阅读2.5w次,点赞37次,收藏43次。Web的发展史可以看作是一个不断演化和发展的过程,不断地引入新的技术和概念,不断地提高用户体验和互动性。随着Web技术的不断发展和演化,我们可以期待更加智能、便捷和个性化的Web应用程序和服务的到来。_web3 csdn

用队列实现栈oj题——225-程序员宅基地

文章浏览阅读1.1k次,点赞43次,收藏32次。初始化两个队列,这两个队列将用于模拟栈的行为。// 定义一个使用两个队列模拟的栈的结构体Queue q1;// 第一个队列Queue q2;// 第二个队列} MyStack;

android下的app性能测试应主要针对那些方面,如何开展?_app性能测试目的-程序员宅基地

文章浏览阅读783次。如何开展安卓手机下的App性能测试,对于优秀的测试人员而言,除了要懂得性能测试的步骤流程外,还应该懂的性能测试的一些其他知识,比如性能测试指标、各指标的意义,常用的性能测试工具、如何查看结果分析等等知识。所以本文为了讲透该知识点,具体的撰写大纲如下所示:_app性能测试目的

随便推点

【预测模型】基于萤火虫算法优化bp神经网络实现数据预测matlab源码_mape1=mean(abs(error./output_test));-程序员宅基地

文章浏览阅读700次。1 算法介绍1.1 萤火虫算法算法基本思想描述如下:在群体中,每个萤火虫个体被随机分布在目标函数定义的空间中,初始阶段,所有的萤火虫都具有相同的荧光素值和动态决策半径。其中,每个萤火虫个体根据来自动态决策半径内所有邻居萤火虫信号的强弱来决定其移动的方向。萤火虫的动态决策半径会随着在它范围内萤火虫个体的数目而变化,每个萤火虫的荧光素也会随着决策半径内萤火虫个体的数目而改变。萤火虫群优化算法是无记忆的,无需目标函数的全局信息和梯度信息,具有计算速度快,调节参数少,易于实现等特点。萤火虫进化过程中,每次._mape1=mean(abs(error./output_test));

mybatis自动生成代码时报错:The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one_mybatisplus报错the server time zone value ' й-程序员宅基地

文章浏览阅读588次。这种情况一般是因为在generatorConfig.xml文件中,连接数据库时缺少serverTimeZone导致的,在数据库连接上加上serverTimeZone=UTC即可解决。generatorConfig.xml代码如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator.._mybatisplus报错the server time zone value ' й

相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)_机器视觉标定-程序员宅基地

文章浏览阅读5.3k次,点赞13次,收藏109次。相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、编程代码实现三个部分。_机器视觉标定

RBM-MHC: A Semi-Supervised Machine-LearningMethod for Sample-Specific Prediction of AntigenPresent-程序员宅基地

文章浏览阅读211次。介绍:本文提出了一种灵活的机器学习方法,用于预测组织相容性白细胞抗原I类蛋白呈递给T细胞的病毒和癌症抗原。该方法旨在对新获得的样本进行预测,现在数据库中关于呈递HLA蛋白的信息很少。1、Highlights:为定制和新产生的数据集可以提供灵活的HLA抗原呈递预测; 预测较差的HLA等位基因得到改善; 在只有很少HLA注释的情况下,能够准确预测HLA类型; 拥有更加低维的数据表示;2、摘要 目前最先进的方法可以准确预测HLA等位基因的表达,在比较具有代表性的等位基因中表现比较好,..._rbm-mhc

【Python】PyQt5 指示灯控件的制作,以及窗口动态添加、删除指示灯控件_pyqt led灯-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏45次。pyqt 自定义了一个指示灯控件,并在窗口中实现动态添加、删除指示灯控件的操作。_pyqt led灯

首次接触PHP问题集-程序员宅基地

文章浏览阅读337次。1月27日问:如何使用Wamp?答:Wamp=Windows+Apache+MySQL+PHP。使用Wamp时,先在点击屏幕右下角wamp的图标,弹出菜单,选择wwwroot,把php文件放在里面。打开浏览器,在里面输入http://localhost/php文件名字。1月30日问:echo用法与如何连接字符串?答:echo是在屏幕输出语句。echo a等于echo "