前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch 1.2 与 Tensorflow 2.0 谁优谁劣?

pytorch 1.2 与 Tensorflow 2.0 谁优谁劣?

作者头像
用户6719124
发布2019-11-18 00:32:06
1.5K0
发布2019-11-18 00:32:06
举报

Tensorflow作为长盛不衰的深度学习框架,一直广泛受到工业、科研学术界的欢迎,而近期推出Tensorflow2.0更是将Tensorflow的热度填了一把火。但作为深度学习的另外两位巨头(Keras和pytorch)似乎也在逐渐的撼动Tensorflow的领主地位。这里主要介绍Tensorflow和pytorch的王者之争。

1.Tensorflow简介

作为Tensorflow1.x的升级款,Tensorflow2.0主要降低了使用时的高门槛。正如Google Brain的工程师Martin Wicke所说,①Tensorflow2.0增强了动态图机制功能Eager execution,使得Tensorflow的编写难度降低②支持更多的平台、语言。③兼容Tensorflow1.x。

2.Pytorch简介

而来自于Facebook的pytorch是最新的深度学习框架之一,于 2017 年在 GitHub 上开源。PyTorch更于简洁、易于使用、支持动态计算图而且内存使用很高效,因此越来越受欢迎。

从近年来的pytorch使用热度来看,逐渐升高。

近期PyTorch由原来的1.0版本更新到了PyTorch1.2版本,顺便像常用的工具也更新到了torchvision0.4,torchaudio0.3 和 torchtext0.4版本。每项工具都进行了新的优化与改进,兼容性更强,使用起来也更加便捷。pytorch1.0,pytorch1.2主要在①改进了生产应用方面,增加了性能更加完善的TorchScript环境,使得构建模型更容易。②增加了对ONNX Opset的支持。③增加nn.Transformer模块,同时增加了的API。

  • nn.Transformer
  • nn.TransformerEncoder 和 nn.TransformerEncoderLayer
  • nn.TransformerDecoder 和 nn.TransformerDecoderLayer

其大致运算流程为:

④围绕PyTorch域的库(如 torchvision、torchtext 和 torchaudio)增加了对常用数据集、模型和转换器的便捷访问,可用于快速创建最先进的基线模型等。

3.两者异同点

相同点

首先两者的主要应用范围构建神经网络,而用于解决手写数字识别、识别汽车注册车牌、目标检测、图像语义分割等简单的分类问题。目前两者在该领域均具有较好的表现。

差异

硬件加速方面

目前两者均可使用英伟达显卡的GPU加速功能,但它们的加速方式却不同。Tensorflow使用的自己内置的GPU加速,而Pytorch需要配合使用CUDA软件(c++后端)来达到加速效果。

执行代码方式

这里需要提到张量的概念,如下图所示。PyTorch和TensorFlow的主要差异是它们执行代码的方式,他们都是基于基础数据类型张量(tensor)而工作。

TensorFlow 框架运行代码时,计算图是以静态方式定义的。计算图是一种将计算描述成有向图的抽象方式。图是一种由节点(顶点)和边构成的数据结构,是由有向的边成对连接的顶点的集合。与外部世界的所有通信都是通过 tf.Sessionobject 和 tf.Placeholder 执行,它们是在运行时会被外部数据替换的张量。

如下图所示:

将这种运行代码变成静态方式生成计算图,则如下图所示。

而Pytorch则会以动态的方式运行代码,计算时会按照计算需求和动态构建Autograd。计算图会随着执行过程而改变和执行节点。

另外pytorch代码与python语言结合的更为紧密,因为pytorch是python化的框架语言,使用者会感觉更加本地化,难度略微降低。

可视化方面可视化

可视化能帮助开发者跟踪训练过程以及实现更方便的调试。在计算过程的可视化方面,TensorFlow的TensorBoard较比pytorch的Visdom略有优势。

tensorlfow的TensorBoard

pytorch的Visdom

生产部署方面

在生产部署上面,tensorflow更胜一筹。对比新生儿pytorch,tensorflow使用了一种rest client API的框架。若要使用pytorch,则还需结合使用Flask 或 Django 作为后端服务器。

总结

tensorflow作为较成熟的深度学习框架,内置各种API可以更好的实现可视化、生产部署,且具有良好的社区系统。最重要的是工业界应用更广,但编写难度较高。而pytorch的学术界应用前景更广,且代码编写难度略低于tensorflow。若您是新上手深度学习,可以直接从pytorch入手,若您有较多的经验,可以直接从tensorflow上手。

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

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档