PaddlePaddle 入门 第一篇

PaddlePaddle 基本介绍

今天开始PaddlePaddle学习的第一篇——入门基本介绍。主要会从两个方面讲解,一个是Paddle自身的两种编程方式以及其对应的优缺点,还有一个就是对其中两个大类数据结构的构成的简略介绍。

1. PaddlePaddle的编程方式

PaddlePaddle的编程方式主要有两种,

  1. 声明式编程(静态图)
  2. 命令式编程(动态图)

其中前者呢,主要是遵循先编译后执行的流程进行的,因此最终可以达到一个性能和显存都得到比较大优化的目的,而后者呢,比较遵循我们一般的编程习惯,像Python一样可以一边调试一边执行,非常方便。二者的优缺点对比如下,

声明式编程(静态图) 命令式编程(动态图)
性能和显存 先编译后执行,进行全局图优化。性能和显存达到最佳。 /
部署 无缝衔接部署 需要先转为静态图再部署
调试 先编译后执行,调试不方便。 边执行边调试
学习门槛 较高 较低
网络结构定义 对于一些树结构处理起来较难 更为灵活

2. 两大基本数据结构

我们知道,神经网络可以定义为如下公式,
$$
神经网络 = 网络结构 + 数据
$$
那么,在PaddlePaddle中网络结构一般是用OP算子去定义的,而数据则是由Variable去表示的。这就是PaddlePaddle中常用的两大基本数据结构了。