Pytorch还是Tensorflow?英伟达工程师帮你总结了
2017-10-27 00:00
316 查看
翻译 | AI科技大本营(rgznai100)
参与 | reason_W
本文作者Dominic Monn,是NVIDIA机器学习工程师。在本文中,作者讲述了自己在深度学习过程中使用PyTorch和TensorFlow的一些实际体会,他从安装、使用、文档、社区和工具五个角度,比较了PyTorch和TensorFlow的优点和不足。
作者此前一直是TensorFlow用户,不过出于工作考虑,加入NVIDIA时,决定改用PyTorch,也就有了对比PyTorch和TensorFlow这篇文章。
PyTorch简单的安装方式、Python化的使用风格,以及比TensorFlow稍快一些的运算速度非常适合工作之外的空闲时间使用。对于想入坑的童鞋来说,这篇文章具有很好的借鉴意义。
安装
PyTorch的安装非常简单。用户可以通过PIP进行安装,也可以从源代码构建。PyTorch还提供了Docker镜像,可以作为您自己的项目的基础镜像。
但是PyTorch没有像TensorFlow那样有专门的CPU和GPU的版本。虽然这样会让安装更容易,但是如果想要同时支持CPU和GPU使用的话,就会需要生成更多代码。
还有一点需要注意的是,PyTorch还没有提供官方的分发渠道。虽然有Windows的非官方端口,但是没有来自PyTorch的支持。
用法
PyTorch提供了一个非常Python化的 API。TensorFlow则需要用户定义所有的Tensors和Graph,然后在会话中运行它。
在我看来,这会带来更多,但也更清洁的代码。 PyTorch图必须在继承自PyTorch nn.Module的类中定义。当运行Graph时,将调用forward() 函数。通过这种“约定配置”的方法,将保证graph的位置总是已知,而不用定义其余代码中的变量。
这种“新”方法需要一些时间才能习惯,但我认为,如果您之前在深度学习之外使用过Python,这会非常简单的。
从一些评论来看,PyTorch与TensorFlow相比,在许多模型上也表现出了更好的性能。
文档
PyTorch文档的大部分已经完成。我在使用过程中,还没有碰到过找不到函数定义或模块的情况。与TensorFlow的所有函数都有一个独立页面不同,PyTorch每个模块仅仅有一页文档。如果你之前一直使用Google风格的编程工具,那么在PyTorch中寻找函数的话,会有点儿困难。
社区
显然,PyTorch的社区并不像TensorFlow那么大。然而,在空闲时间许多人还是喜欢PyTorch,即使在上班时间他们要使用TensorFlow。一旦PyTorch开始完成公测,推出正式版本,我相信Pytorch的社区现状就会改变。而且目前,在PyTorch社区里想发现老司机还有一点难度。
只有社区足够大,官方论坛中的问题才会比较快速的得到一个答案,并且完善很多神经网络示例的PyTorch版本。
工具和助手
尽管PyTorch提供了相当数量的工具,但一些非常有用的工具却十分缺少。尤其是缺少一个像TensorFlow里的TensorBoard那样强有力的工具。这就使得可视化比较困难。
还有一些非常常见的辅助工具也比较缺乏。这需要比TensorFlow更多的自写代码。
结论
如果你想换掉TensorFlow,那么PyTorch绝对是最佳选择。由于PyTorch还处于测试阶段,我希望它可以在可用性,文档和性能等方面有更多的改变和提升。
PyTorch是非常python化的工具,用起来感觉也很舒服。它有一个很好的社区和文档,而且运行起来也被认为比TensorFlow快。
当然,与TensorFlow相比,PyTorch的社区仍然相对较小,并且缺少一些有用的工具,例如像TensorBoard这样的可视化工具。
7 场不可错过的 AI 技术专题 | 明日直播
随着算法改进、硬件升级、架构优化,应用人工智能技术带来的收益还会越来越高。
那么,针对人工智能技术正在构建的商业和技术体系,我们又该从哪里去窥伺其中的门径呢?一线的人工智能专家正在关注哪些关键技术?如何从理论跨越到企业创新实践?
基于此,CSDN倾力打造了「SDCC 人工智能技术实战峰会」,邀请了来自阿里巴巴、微软、商汤科技、第四范式、微博、出门问问、菱歌科技的AI专家,将针对机器学习平台、系统架构、对话机器人、芯片、推荐系统、Keras、分布式系统、NLP等热点话题进行7场技术专题分享。
扫描下方二维码,备注“人工智能”,入群交流
相关文章推荐
- 经验 | Pytorch还是Tensorflow?英伟达工程师帮你总结了
- 一个ruby工程师的2013年个人工作总结
- tensorflow学习之常用函数总结:tensorflow.placeholder()函数
- Google的TensorFlow,微软CNTK, Amazon 的MxNet,Facebook 的Caffe2, PyTorch,国内百度的PaddlePaddle
- FPGA工程师的个人工作经历总结
- 百度2015实习生招聘(开发测试工程师)一面总结
- 软件测试工程师的工作总结
- 2018届校招Andoid开发工程师总结--笔经面经
- 从代码风格窥视一个工程师的技术水平[总结篇]
- 10年老工程师总结PCB板布线绝招
- 软件开发工程师年终总结
- 面试总结——Java高级工程师应该掌握的技能
- tensorflow 错误总结
- 网络工程师基础知识总结----- 网络操作系统
- 系统集成项目管理工程师教程知识点总结1
- PaddlePaddle, TensorFlow, MXNet, Caffe2 , PyTorch五大深度学习框架2017-10评测
- 面试题总结 —— JAVA高级工程师
- 每日总结 - 网络请求HttpURLConnection还是HttpClient
- FCN.tensorflow环境配置总结
- 全国四级-网络工程师考试总结