Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
7aec1e7f
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
10
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
7aec1e7f
编写于
5月 20, 2020
作者:
S
swtkiwi
提交者:
GitHub
5月 20, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Cherry pick11 (#2161)
* test=release/2.0-alpha * test=develop
上级
377f7dd7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
89 addition
and
0 deletion
+89
-0
doc/fluid/api_cn/index_cn.rst
doc/fluid/api_cn/index_cn.rst
+89
-0
未找到文件。
doc/fluid/api_cn/index_cn.rst
浏览文件 @
7aec1e7f
...
...
@@ -2,6 +2,95 @@
API
Reference
=============
基础
API
-------
飞桨
2.0
提供了新的
API
,可以同时支持声明式和命令式两种开发模式,比如
paddle
.
nn
.
Linear
,避免在两种模式下使用不同的
API
造成困惑。原飞桨
1.
x
的
API
位于
paddle
.
fluid
目录下,其中部分组网类的
API
,只能用于声明式开发,比如:
fluid
.
layers
.
fc
,无法用于命令式开发。
飞桨
2.0
对
API
的目录结构进行了调整,从原来的
paddle
.
fluid
目录调整到
paddle
目录下,使得开发接口更加清晰,调整后的目录结构如下:
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
目录
|
功能和包含
API
|
+=====================+===========================================================================================================+
|
paddle
.\*
|
paddle
根目录下保留了常用
API
的别名,当前包括:
paddle
.
tensor
,
paddle
.
framework
目录下的所有
API
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
tensor
|
跟
tensor
操作相关的
API
,比如:创建
zeros
,
矩阵运算
matmul
,
变换
concat
,
计算
elementwise
\
_add
,
查找
argmax
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
nn
|
跟组网相关的
API
,比如:输入占位符
data
/
Input
,控制流
while
\
_loop
/
cond
,损失函数,卷积,
LSTM
等,激活函数等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
framework
|
基础框架相关的
API
,比如:
Variable
,
Program
,
Executor
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
imperative
|
imprerative
模式专用的
API
,比如:
to
\
_variable
,
prepare
\
_context
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
optimizer
|
优化算法相关
API
,比如:
SGD
,
Adagrad
,
Adam
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
metric
|
评估指标计算相关的
API
,比如:
accuracy
,
cos
\
_sim
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
io
|
数据输入输出相关
API
,比如:
save
,
load
,
Dataset
,
DataLoader
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
device
|
设备管理相关
API
,比如:
CPUPlace
,
CUDAPlace
等
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
|
paddle
.
fleet
|
分布式相关
API
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
同时飞桨
2.0
对部分
Paddle
1.
x
版本的
API
进行了清理,删除了部分不再推荐使用的
API
,具体信息请参考
Release
Note
。
高层
API
-------
使用飞桨进行深度学习任务的开发,整体过程包括数据处理、组网、训练、评估、模型导出、预测部署这些基本的操作。这些基本操作在不同的任务中会反复出现,使用基础
API
进行开发时,需要开发者重复地写这些基础操作的代码,增加了模型开发的工作量。高层
API
针对这些基础操作进行了封装,提供更高层的开发接口,开发者只需要关心数据处理和自定义组网,其他工作可以通过调用高层
API
来完成。在
MNIST
手写数字识别任务中,对比动态图基础
API
的实现方式,通过使用高层
API
可以减少
80
%
的非组网类代码。
使用高层
API
的另外一个好处是,可以通过一行代码
\
``
paddle
.
enable_imperative
``\
,切换命令式编程模式和声明式编程模式。在开发阶段,可以使用的命令式编程模式,方便调试;开发完成后,可以切换到声明式编程模式,加速训练和方便部署。兼具了命令式编程实时执行,容易调试的优点,以及声明式编程全局优化和容易部署的优点。
以下为高层
API
的一个基础示例
..
code
::
python
import
numpy
as
np
import
paddle
import
paddle
.
nn
.
functional
as
F
from
paddle
.
incubate
.
hapi
.
model
import
Model
,
Input
,
Loss
from
paddle
.
incubate
.
hapi
.
loss
import
CrossEntropy
#
高层
API
的组网方式需要继承
Model
,
Model
类实现了模型执行所需的逻辑
class
SimpleNet
(
Model
):
def
__init__
(
self
,
in_size
,
out_size
):
super
(
SimpleNet
,
self
).
__init__
()
self
.
_linear
=
paddle
.
nn
.
Linear
(
in_size
,
out_size
)
def
forward
(
self
,
x
):
y
=
self
.
_linear
(
x
)
z
=
self
.
_linear
(
y
)
pred
=
F
.
softmax
(
z
)
return
pred
#
兼容声明式开发模式,定义数据形状类型,如果不使用声明式编程模式,可以不定义数据占位符
inputs
=
[
Input
([
None
,
8
],
'float32'
,
name
=
'image'
)]
labels
=
[
Input
([
None
,
1
],
'int64'
,
name
=
'labels'
)]
#
定义模型网络结构,包括指定损失函数和优化算法
model
=
SimpleNet
(
8
,
8
)
optimizer
=
paddle
.
optimizer
.
AdamOptimizer
(
learning_rate
=
0.1
,
parameter_list
=
model
.
parameters
())
model
.
prepare
(
optimizer
,
CrossEntropy
(),
None
,
inputs
,
labels
,
device
=
'cpu'
)
#
切换执行模式
paddle
.
enable_imperative
(
paddle
.
CPUPlace
())
#
基于
batch
的训练
batch_num
=
10
x
=
np
.
random
.
random
((
4
,
8
)).
astype
(
'float32'
)
y
=
np
.
random
.
randint
(
0
,
8
,
(
4
,
1
)).
astype
(
'int64'
)
for
i
in
range
(
batch_num
):
model
.
train_batch
(
inputs
=
x
,
labels
=
y
)
更多高层
API
开发的模型和示例请参考
github
Repo
:
`
hapi
<
https
://
github
.
com
/
paddlepaddle
/
hapi
>`
__
..
toctree
::
:
maxdepth
:
1
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录