PyTorch与TensorFlow对比:哪个更适合你?

pytorch 和 tensorflow的区别



1 图的创建及调试

pytorch 图结构的创建是动态的,即图是运行时创建;更易调试pytorch代码,调试pytorch代码就像调试python代码一样,可以利用pdp在任何地方设置断点;

tensorflow 图结构的创建是静态的,即图首先被"编译",然后在运行;不易调试要么从会话请求检查变量,要么学习使用tfdbg调试器;



2  灵活性

tensorflow:静态计算图,数据参数在CPU与GPU之间迁移麻烦,调试麻烦
pytorch:动态计算图,数据参数在CPU与GPU之间迁移十分灵活,调试简便



3 设备管理---------------内存 显存

tensorflow:不需要手动调整,简单

TensorFlow的设备管理非常好用。通常你不需要进行调整,因为默认的设置就很好。例如,TensorFlow会假设你想运行在GPU上(如果有的话);

TensorFlow设备管理唯一的缺点是,默认情况下,它会占用所有的GPU显存。简单的解决办法是指定CUDA_VISIBLE_DEVICES。有时候大家会忘了这一点,所以GPU在空闲的时候,也会显得很忙。

pytorch:需要明确启用的设备,启用CUDA时,需要明确把一切移入设备;

缺点:代码需要频繁的检查CUDA是否可用,及明确的设备管理,在编写能同时在CPU和GPU上运行的代码时尤其如此

关于这点,凭个人喜好,我比较喜欢手动启用CUDA_VISIBLE_DEVICES,我个人对内存、显存的管理较严;



reference:  

区别详解

tensorflow是谷歌开源的深度学习框架,有全面且详细的文档

pytorch是facebook开源的深度学习框架,

区别1 动态图及静态图的定义及调试方面

tensorflow是静态图,我们需要先构建一个tensorflow的计算图,构建好以后,这样一个计算图是不能变的,然后我们在传入不同的数据进行计算;这样带来一个问题:固定了计算流程(计算图),势必带来不灵活,如果我们想改变计算逻辑,将变得很麻烦!

具体来说:在tensorflow中,首先构架张量的计算图维度及给变量分配占位符,接着必须运行会话才能计算所有计算结果,并且不容易调试

pytorch是动态图,可以和python的逻辑是一样的,要对变量做任何操作都是灵活的。

一个好的框架应该要具备三点:方便实现大计算图;可自动求变量的导数;可简单的运行在GPU上;pytorch都做到了,但是现在很多公司用的都是TensorFlow,而pytorch由于比较灵活,在学术科研上用得比较多一点。鄙人认为可能,Google可能下手早一些,而Facebook作后来者,虽然灵活,但是很多公司已经入了TensorFlow的坑了,要全部迁移出来还是很费功夫;而且,TensorFlow在GPU的分布式计算上更为出色,在数据量巨大时效率比pytorch要高一些,我觉得这个也是一个重要的原因吧。



pytorch胜过TensorFlow


区别2:可视化方面

可视化是理解模型性能和工作的关键。 tensorboard具有图形和模型的实时表示功能,非常方便;不仅可以获得神经网络的图形表示,还能够获得实时的损失和准确度图,用以描绘模型在特定迭代中的精确度。

pytorch和tensorflow起鼓相当


区别3 部署

tensorflow强于pytorch

具体表现:内置框架 TensorFlow Serving 帮助我们在特制的 gPRC 服务器上部署需要的模型,同时支持移动端部署模型;同样支持分布式训练;

pytorch: 在部署时需要Flask或其他工具在模型上编写一个REST API  pytorch的分布式训练支持性能不理想



区别4 数据并行-----------很重要的区别之一

PyTorch 是声明式数据并行:用 torch.nn.DataParellel 封装任何模型,模型能在批处理维度上实现并行,这样你就可以毫不费力的使用多个 GPU;

tensorflow需要手动调整数据并行

note: 两个框架都支持分布式执行,提供用于定义集群的高水平界面




区别5 pytorch更像一个框架,tensorflow更像一个库

pytorch搭建模型时,编写框架会在特定区域为我们提供有用的抽象,用以解决具体问题;如引入datasets模块,它包含的封装器适用于DL架构的常见数据集;nn.Module用于搭建自定义模型;torch.nn包包含很多可用模块,作为构架模型的基础;pytorch用面向对象的方式定义基本程序块,通过扩展子类来构建DL框架

tensorflow给人的感觉更像一个库,所有操作都是低阶操作,需要些很多样本代码;由此,渐渐出现了一批围绕 TensorFlow 的高级封装器,如slim tflearn keras estimator等等;你在如何使用 TensorFlow 上有很大的自由度,同样也能自由选择使用最匹配任务的框架;

小结: TensorFlow 和 PyTorch 都能提供有用的抽象,减少样板代码的数量,加快模型的部署速度;二者的不同之处在于pytorch采用面向对象的方式;tensorflow有多种选择方式。


总结: tensorflow是谷歌开源的一款成熟强大的DL框架,有强大的可视化功能,高水平模型开发,强大的部署选项,支持移动平台,适用于以下情况:

1)开发用于生产的模型;

2)开发需要在移动平台上部署的模型

3)想要非常好的社区支持和较为全面的帮助文档;

4) 想要丰富的多种形式的学习资源  

5) 想要或需要使用 Tensorboard

6) 需要用到大规模的分布式模型训练


pytorch是facebook开源的一款强大的DL框架,适用于以下情况:

1)正在做机器学习研究,或开发的产品在非功能性需求方面要求不高;

2) 想要获得更好的开发和调试经验;

3)喜欢很有“Python 味”的东西


建议:

PyTorch因其动态的计算方法和简单性而越来越受欢迎。 建议初学者在继续使用TensorFlow之前在PyTorch上工作,这有助于他们专注于模型而不是花时间构建图形。



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空