前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow与PyTorch对比

TensorFlow与PyTorch对比

作者头像
用户7164815
发布2020-04-08 11:16:06
2.4K0
发布2020-04-08 11:16:06
举报
文章被收录于专栏:AI人工智能与大数据

用TensorFlow还是PyTorch?从TensorFlow开始学起还是PyTorch?在一年前,这个问题毫无争议,当然是TensorFlow. 但时过境迁,现在的情况大不一样了,下面就来分析对比一下这两个主流框架。

首先看一下最近的统计数据,下图的数据是从arxiv论文中统计得到的。上面的黄线是TensorFlow的使用比例,下面的红线是PyTorch的使用比例,可以看出,最近的数据两者已经不差上下,甚至红线PyTorch在2019.6要略胜一筹。

右边的条形图是从1月到6月的累计数据,TensorFlow占比还是要略高一点,但是23%的增长率明显要低于PyTorch的194%.也就是说,现在TensorFlow和PyTorch在学术界的使用率上来说已经不差上下了

来源:https://www.oreilly.com/ideas/one-simple-graphic-researchers-love-pytorch-and-tensorflow

决定一个框架的使用率有哪些因素呢?我总结有以下四个方面:

  1. 易用性
  2. 速度
  3. 算子数量
  4. 开源模型

第一是易用性。PyTorch自从2018年12月PyTorch 1.0 stable版本正式发布以来,只有半年多的时间,能迅速增长易用性功不可没。PyTorch的易用性一方面是debug简单,可以直接设置断点查看各个tensor的值,另一方面tensor可以和numpy格式互相转换调用,可以使用python的控制流,大大扩充了其灵活性(TensorFlow推出的eager模式有类似目的和效果)。

第二是速度。训练是一个费时费力的过程,用GPU训练一两天是正常,甚至有的大模型大数据量需要十天半个月(例如BERT large),因此训练速度也是大家比较关心的一个指标。PyTorch虽然提供了非常灵活的接口,采用动态图机制,但是也做了非常多的优化,比如异步调用,尽量流水执行等方式,使得其速度和TensorFlow相当,甚至一些场景优于TensorFlow.

第三是算子数量。这一点TensorFlow无疑是最大的赢家,提供的python API达到8000多个(参见https://tensorflow.google.cn/api_docs/python),基本上不存在用户找不到的算子,所有的算法都可以用TensorFlow算子拼出来。不过API过多也是个负担,又是low level又是high level,容易把用户整晕。PyTorch由于起步较晚,数量少有劣势,但质量上有优势。

第四是开源模型。这点其实也非常重要,试想一下,现在你要用BERT,这个是由Google研究发布,基于TensorFlow开源的,那自然只能选TensorFlow上手了。虽然后续有人开源PyTorch的版本,但毕竟时间上要晚一些,而且非官方的,质量不能得到100%的保证,关注度会大打折扣。不过PyTorch这方面也非常重视,之前把何凯明挖过去,构建了自己的图像检测、分割开源库Detectron,对提升PyTorch的使用率起了很大作用。

总得来说,这两种框架是都需要必备的,掌握各自的使用技巧,多看新的模型,才能立于不败之地~

附录:

TensorFlow models:

bert

boosted_trees

mnist

resnet

transformer

wide_deep

adversarial_crypto

adversarial_text

attention_ocr

audioset

autoencoder

brain_coder

cognitive_mapping_and_planning

compression

cvt_text

deep_contextual_bandits

deep_speech

deeplab

delf

differential_privacy

domain_adaptation

fivo

gan

im2txt

inception

keypointnet

learning_to_remember_rare_events

learning_unsupervised_learning

lexnet_nc

lfads

lm_1b

lm_commonsense

maskgan

namignizer

neural_gpu

neural_programmer

next_frame_prediction

object_detection

pcl_rl

ptn

marco

qa_kg

real_nvp

rebar

resnet

seq2species

skip_thoughts

slim

street

struct2depth

swivel

syntaxnet

tcn

textsum

transformer

vid2depth

video_prediction

PyTorch models

AlexNet

VGG

ResNet

SqueezeNet

DenseNet

Inception v3

GoogLeNet

ShuffleNet v2

MobileNet v2

ResNeXt

FCN ResNet101

DeepLabV3 ResNet101

Faster R-CNN ResNet-50 FPN

Mask R-CNN ResNet-50 FPN

Keypoint R-CNN ResNet-50 FPN

参考资料:

统计数据:https://www.oreilly.com/ideas/one-simple-graphic-researchers-love-pytorch-and-tensorflow

Eager发布的blog: https://ai.googleblog.com/2017/10/eager-execution-imperative-define-by.html

Eager说明:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/README.md#changelog

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI人工智能与大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档