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科技大本营转载文章,转载联系原作者)

精彩公开课

推荐阅读

PyTorchTensorflow是两个不同的深度学习框架,它们的模型结构和参数存储方式也不同,因此不能直接进行切换。但是,我们可以通过将模型转换为中间格式,再在不同的框架中加载和使用,从而实现在PyTorchTensorflow之间的切换。 具体来说,我们可以将PyTorch模型转换为ONNX格式,再使用ONNX-Tensorflow库将ONNX模型转换为Tensorflow模型;或者将Tensorflow模型转换为SavedModel格式,再使用PyTorch的tf2onnx库将SavedModel模型转换为ONNX模型,最后PyTorch中加载ONNX模型。 下面以将PyTorch模型转换为Tensorflow模型为例: 1. 安装ONNX和ONNX-Tensorflow库: ``` pip install onnx onnx_tf ``` 2. 将PyTorch模型转换为ONNX模型: ```python import torch import onnx # 加载PyTorch模型 pytorch_model = torch.load('model.pt') # 将PyTorch模型转换为ONNX模型 dummy_input = torch.randn(1, 3, 224, 224) onnx_model_path = 'model.onnx' torch.onnx.export(pytorch_model, dummy_input, onnx_model_path, verbose=True) ``` 3. 将ONNX模型转换为Tensorflow模型: ```python import onnx_tf # 加载ONNX模型 onnx_model = onnx.load(onnx_model_path) # 将ONNX模型转换为Tensorflow模型 tf_model_path = 'model.pb' onnx_tf.export_model(onnx_model, tf_model_path) ``` 4. 在Tensorflow中加载模型: ```python import tensorflow as tf # 加载Tensorflow模型 tf.keras.backend.set_learning_phase(0) tf_model = tf.keras.models.load_model(tf_model_path) ``` 需要注意的是,由于PyTorchTensorflow之间存在一些差异,因此在进行模型转换时可能存在一些限制和问题。因此,在进行模型转换前需要对PyTorch模型进行一些调整和优化,以确保转换后的Tensorflow模型能够达到预期的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值