一文说清楚pytorch和tensorFlow的区别究竟在哪里

最近用了一点pytorch,想着稍稍理一下,这样一个和TensorFlow抗衡的一个框架,究竟是何方神圣?首先我们要搞清楚pytorch和TensorFlow的一点区别,那就是pytorch是一个动态的框架,而TensorFlow是一个静态的框架。何为静态的框架呢?我们知道,TensorFlow的尿性是,我们需要先构建一个TensorFlow的计算图,构建好了之后,这样一个计算图是不能够变的了…

大家好,又见面了,我是你们的朋友全栈君。

最近用了一点pytorch,想着稍稍理一下,这样一个和TensorFlow抗衡的一个框架,究竟是何方神圣?

首先我们要搞清楚pytorch和TensorFlow的一点区别,那就是pytorch是一个动态的框架,而TensorFlow是一个静态的框架。何为静态的框架呢?我们知道,TensorFlow的尿性是,我们需要先构建一个TensorFlow的计算图,构建好了之后,这样一个计算图是不能够变的了,然后我们再传入不同的数据进去,进行计算。这就带来一个问题,就是固定了计算的流程,势必带来了不灵活性,如果我们要改变计算的逻辑,或者随着时间变化的计算逻辑,这样的动态计算TensorFlow是实现不了的,或者是很麻烦。

但是pytorch就是一个动态的框架,这就和python的逻辑是一样的,要对变量做任何操作都是灵活的。

举个简单的例子,当我们要实现一个这样的计算图时:

一文说清楚pytorch和tensorFlow的区别究竟在哪里

用TensorFlow是这样的:

一文说清楚pytorch和tensorFlow的区别究竟在哪里

而用pytorch是这样的:

一文说清楚pytorch和tensorFlow的区别究竟在哪里

当然,里面都包含了建立前向计算图,传入变量数据,求梯度等操作,但是显而易见,pytorch的代码更为凝练。TensorFlow我也用得比较少,我本文重点说说pytorch的一些学习心得,一是总结,而是若有缘人能看见此文,也能当个参考。

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

好的,不闲扯了。pytorch的一些心得,我总结一下:

首先,pytorch包括了三个层次:tensor,variable,Module。tensor,即张量的意思,由于是矩阵的运算,十分适合在GPU上跑。但是这样一个tensor为什么还不够呢?要搞出来一个variable,其实variable只是tensor的一个封装,这样一个封装,最重要的目的,就是能够保存住该variable在整个计算图中的位置,详细的说:能够知道计算图中各个变量之间的相互依赖关系。什么,你问这有什么用?当然是为了反向求梯度了;而Module,是一个更高的层次,如果使用这个Module,那可厉害了,这是一个神经网络的层次,可以直接调用全连接层,卷积层,等等神经网络。

感觉写不完了,有人看再更吧,如果又兴趣的话,可以去看我的这一课https://blog.csdn.net/ibelieve8013/article/details/84206410的导图,只要你认真看,真的很清晰的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125444.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux下如何启动ice服务器,Linux下ICE的安装[通俗易懂]

    linux下如何启动ice服务器,Linux下ICE的安装[通俗易懂]ICE在Linux下的完整编译安装安装平台要求:最好用gcc4.x版编译ICE,在Slackware下发现gcc3.3.6和gcc3.4.6都无法编译通过为了方便管理,将ICE相关的软件都安装到/usr/local/ICE-3.3.0/目录下首先安装第三方包:ThirdParty-Sources-3.3.0.tar.gz解压ThirdParty-Sources-3.3.0.tar.gz#c…

    2022年5月29日
    86
  • 机器学习之有监督学习,无监督学习,半监督学习

    机器学习之有监督学习,无监督学习,半监督学习文章目录前言有监督学习无监督学习半监督学习前言机器学习是数据分析和数据挖掘的一种比较常用,比较好的手段从有无监督的角度,可以分为三类:有监督学习无监督学习半监督学习有监督学习用已知某种或某些特性的样本作为训练集,以建立一个数学模型,再用已建立的模型来预测未知样本,此种方法被称为有监督学习,是最常用的一种机器学习方法。是从标签化训练数据集中推断出模型的机器学习任务问:有监督学习的…

    2022年5月28日
    57
  • 奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用

    奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用本打算实现一个点击按钮弹出一个landKindView然后点击屏幕其他部分时移除这个VIew,没想到的是,出了诸多不可思议的问题。在给这个控制器的View添加手势时,然后居然拦截不到,touchesbegin方法,然后又试了下添加tapGesture,依旧是没有反应。然后我试着在touchesBegin方法中 实现[supertouchesBegins….];依旧是没有任

    2022年7月25日
    10
  • 华为手机如何把大量照片导入到电脑上去_华为手机照片批量导入电脑

    华为手机如何把大量照片导入到电脑上去_华为手机照片批量导入电脑在华为手机和电脑上同时安装华为手机助手,然后进入手机系统的关于手机,连续点击版本号5次,打开开发者模式。步骤阅读步骤阅读2用数据线把手机插入电脑主机,点击传输文件。步骤阅读3手机界面弹出

    2022年8月4日
    7
  • 微信小程序php后端搭建_微信小程序访问服务器

    微信小程序php后端搭建_微信小程序访问服务器    在去年的时候,参加过学校的一个创业活动,在团队决定做一个关于图书的微信小程序以后,我负责做微信小程序的后台程序,因为初次接触,决定选用较为简单的PHP作为后台语言,实现了微信小程序的一些基本功能,例如对微信前段来的图片文字进行存储,或者接收到前端传来的关键字对服务器里的数据进行查询并返回前端,利用前端传来图书的ISBN码调用第三方豆瓣图书接口进行图书信息查询,最后还有比较难实现的微信支付功…

    2022年9月17日
    2
  • 选择性忽略的心理_选择性忽略是什么意思

    选择性忽略的心理_选择性忽略是什么意思Python:PyCharm选择性忽略PEP8警告PyCharm是个很强大的pythonIDE,PEP8的告警提示也很好用,但是函数名不能包含大写字母等少数几个规范真心觉得不好,如何取消呢?见下述步骤:在Ignorederrors中添加要忽略的告警ID。注意,要区分是属于coding还是naming。错误代码code samplemessage N801 classnamesshoulduseCapWordsconvention N8

    2022年8月29日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号