TensorFlow动态图 VS PyTorch静态图

点击关注我哦

一篇文章带你了解动态图和静态图的区别和优劣

但凡我们接触深度学习框架,肯定都会听过“计算图”这个概念,如果有具体使用过某个框架,可以知道计算图又可以分为:静态图和动态图。深度学习最大的区别也在于此:使用不同的计算图进行构造和运行。

静态图意味着我们只需要定义一个计算图,然后对其进行编译,在后续过程中不断使用它。而动态图则相反,由于并没有预先定义,即在每次使用时建立,程序按照我们编写命令的顺序进行执行。

静态图以TensorFlow为例,我们在模型运行前定义一个静态图,至此,所有和外部的通信都是通过tf.Session()对象和tf.Placeholder占位符执行的,其中tf.Seesion用来开启会话,tf.Placeholder是在运行时外部数据传入的占位符张量。

鉴于静态图的这种构建机制,从理论上讲,容易在图上对其进行优化,因此其运算效率会比较高。

动态图以Pytorch为例,事情就变得比较动态化:我们可以随时定义、更改和执行代码,而不需要特殊的会话窗口和占位符。并且该框架和Python语言紧密结合,省出了额度学习成本,用起来会感觉比TensorFlow更为原生和友好。

动态图的构造原理使得调试过程变得更为容易,也能更直观地设计,因此比较方便我们将自己的想法快速进行复现,可以说是学术“利器”。

借用网络上一个小伙伴的有趣比喻,假如我们让TensorFlow和Pytorch分别造一座房子:

TensorFlow会先将造房子的流程预演一遍,设计好流程图,看下都需要什么资源,提前规划好什么时候需要做什么,最后找到一个可以建造这种房子的工程队。最后把上面那些全部交给工程队搞定。

Pytorch会先将造房子分成几个项目,每一个项目相互独立。等到开始建造房子的时候,写一个TODO list把需要做的事情安装所需顺序串起来,然后分别去执行每个项目。

注:很多网络模型可能使用动态图或者静态图更为友好,读者可以根据自己的网络结构恰当选择。

我们用一张表格对其进行比较:

大家如果在Pytorch的学习过程中有什么疑问,也可以后台留言告诉小蓝~有时间会给大家一一回复~

·  END  ·

RECOMMEND

推荐阅读

 1. 深度学习——入门PyTorch(一)

 2. 深度学习——入门PyTorch(二)

 3. PyTorch入门——autograd(一)

 4. PyTorch入门——autograd(二)

 5. PyTorch入门——autograd(三)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值