PaddlePaddle 基本介绍
今天开始PaddlePaddle学习的第一篇——入门基本介绍。主要会从两个方面讲解,一个是Paddle自身的两种编程方式以及其对应的优缺点,还有一个就是对其中两个大类数据结构的构成的简略介绍。
1. PaddlePaddle的编程方式
PaddlePaddle的编程方式主要有两种,
- 声明式编程(静态图)
- 命令式编程(动态图)
其中前者呢,主要是遵循先编译后执行的流程进行的,因此最终可以达到一个性能和显存都得到比较大优化的目的,而后者呢,比较遵循我们一般的编程习惯,像Python一样可以一边调试一边执行,非常方便。二者的优缺点对比如下,
声明式编程(静态图) | 命令式编程(动态图) | |
---|---|---|
性能和显存 | 先编译后执行,进行全局图优化。性能和显存达到最佳。 | / |
部署 | 无缝衔接部署 | 需要先转为静态图再部署 |
调试 | 先编译后执行,调试不方便。 | 边执行边调试 |
学习门槛 | 较高 | 较低 |
网络结构定义 | 对于一些树结构处理起来较难 | 更为灵活 |
2. 两大基本数据结构
我们知道,神经网络可以定义为如下公式,
$$
神经网络 = 网络结构 + 数据
$$
那么,在PaddlePaddle中网络结构一般是用OP算子去定义的,而数据则是由Variable去表示的。这就是PaddlePaddle中常用的两大基本数据结构了。