一文搞懂飞桨静态图与动态图(从API分清描述式编程与命令式编程的区别)

写在前面

PaddlePaddle即飞桨,我在学习这个框架的过程中,其实是很迷的,迷惑的地方就在它的静态图与动态图。于是,我打算好好整理整理,把两者的特点给大家解析一下,让新入门的开发者少走弯路。

  1. 关于飞桨的版本
  2. 静态图
  3. 动态图

在这里插入图片描述

1. 关于飞桨的版本

我查阅了飞桨的文档,PaddlePaddle1.3版本是没有动态图这个概念的,从PaddlePaddle1.4才开始出现动态图:
在这里插入图片描述
因此,要使用飞桨的动态图,或者说命令式编程时,飞桨的版本一定要在1.4以上

在开始之前,我再多提一句:

  • 静态图: 描述(声明)式编程
  • 动态图: 命令式编程

从编程范式上说,飞桨兼容支持声明式编程和命令式编程,通俗地讲即静态图和动态图。其实飞桨本没有图的概念,在飞桨的设计中,把一个神经网络定义成一段类似程序的描述,也就是用户在写程序的过程中,就定义了模型表达及计算。

在静态图的控制流实现方面,飞桨借助自己实现的控制流OP而不是python原生的if else和for循环,这使得在飞桨中的定义的program即一个网络模型,可以有一个内部的表达,是可以全局优化编译执行的。

考虑到开发者更愿意使用python原生控制流,飞桨也做了支持,并通过解释方式执行,这就是命令式编程模式。

但整体上,这两种编程范式是相对兼容统一的。飞桨将持续发布更完善的命令式编程功能,同时保持更强劲的性能。

2. 静态图

代码示例:

import paddle.fluid as fluid
import numpy as np
x_np = np.random.rand(1).astype("float32")
y_np = np.random.rand
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.郑先生_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值