Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
c245fed2
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
7
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看板
未验证
提交
c245fed2
编写于
5月 20, 2020
作者:
S
swtkiwi
提交者:
GitHub
5月 20, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test=develop (#2158)
上级
751b46f5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
130 deletion
+30
-130
doc/fluid/api_cn/index_cn.rst
doc/fluid/api_cn/index_cn.rst
+30
-130
未找到文件。
doc/fluid/api_cn/index_cn.rst
浏览文件 @
c245fed2
...
...
@@ -2,107 +2,43 @@
API
Reference
=============
飞桨
2.0
概述
-----------
在保持
1.
x
版本工业级大规模高效训练和多平台快速部署优势的前提,飞桨
2.0
版本重点提升了框架的易用性,主要在用户交互层进行了优化,降低学习门槛,提升开发效率。不管对于初学者还是资深专家,都能够更容易地使用飞桨进行深度学习任务开发,加速前沿算法研究和工业级任务开发。
此版本为测试版,还在迭代开发中,目前还没有稳定,后续
API
会根据反馈有可能进行不兼容的升级。对于想要体验飞桨最新特性的开发者,欢迎试用此版本;对稳定性要求高的工业级应用场景推荐使用
Paddle
1.8
稳定版本。此版本主推命令式
(
imperative
)
开发模式,并提供了高层
API
的封装。命令式开发模式具有很好的灵活性,高层
API
可以大幅减少重复代码。对于初学者或基础的任务场景,推荐使用高层
API
的开发方式,简单易用;对于资深开发者想要实现复杂的功能,推荐使用动态图的
API
,灵活高效。
跟
1.
x
版本对比,飞桨
2.0
版本的重要升级如下:
+------------+--------------------------------------+-----------------------------------------+
|
|
飞桨
1.
x
版本
|
飞桨
2.0
版本
|
+============+======================================+=========================================+
|
开发模式
|
推荐声明式(
declarative
)
|
推荐命令式
(
imperative
)
|
+------------+--------------------------------------+-----------------------------------------+
|
组网方式
|
推荐函数式组网
|
推荐面向对象式组网
|
+------------+--------------------------------------+-----------------------------------------+
|
高层
API
|
无
|
封装常见的操作,实现低代码开发
|
+------------+--------------------------------------+-----------------------------------------+
|
基础
API
|
fluid
目录,结构不清晰,存在过时
API
|
paddle
目录,整体结构调整,清理废弃
API
|
+------------+--------------------------------------+-----------------------------------------+
开发模式
--------
飞桨同时支持声明式和命令式这两种开发模式,兼具声明式编程的高效和命令式编程的灵活。
声明式编程模式(通常也被称为静态模式或
define
-
and
-
run
模式),程序可以明确分为网络结构定义和执行这两个阶段。定义阶段声明网络结构,此时并未传入具体的训练数据;执行阶段需要用户通过
feed
的方式传入具体数据,完成计算后,通过
fetch
的方式返回计算结果。示例如下:
..
code
::
python
import
numpy
import
paddle
#
定义输入数据占位符
a
=
paddle
.
nn
.
data
(
name
=
"a"
,
shape
=[
1
],
dtype
=
'int64'
)
b
=
paddle
.
nn
.
data
(
name
=
"b"
,
shape
=[
1
],
dtype
=
'int64'
)
#
组建网络(此处网络仅由一个操作构成,即
elementwise_add
)
result
=
paddle
.
elementwise_add
(
a
,
b
)
#
准备运行网络
cpu
=
paddle
.
CPUPlace
()
#
定义运算设备,这里选择在
CPU
下训练
exe
=
paddle
.
Executor
(
cpu
)
#
创建执行器
#
创建输入数据
x
=
numpy
.
array
([
2
])
y
=
numpy
.
array
([
3
])
#
运行网络
outs
=
exe
.
run
(
feed
={
'a'
:
x
,
'b'
:
y
},
#
将输入数据
x
,
y
分别赋值给变量
a
,
b
fetch_list
=[
result
]
#
通过
fetch_list
参数指定需要获取的变量结果
)
#
输出运行结果
print
(
outs
)
#[
array
([
5
],
dtype
=
int64
)]
声明式开发模式的优点为在程序执行之前,可以拿到全局的组网信息,方便对计算图进行全局的优化,提升性能;并且由于全局计算图的存在,方便将计算图导出到文件,方便部署到非
python
语言的开发环境中,比如:
C
/
C
++/
JavaScript
等。声明式开发模式的缺点为,由于网络定义和执行阶段分离,在定义的时候并不知道所执行的具体的数据,程序的开发和调试会比较困难。
命令式编程模式(通常也被称为动态模式、
eager
模式或
define
-
by
-
run
模式),程序在网络结构定义的同时立即执行,能够实时的到执行结果。示例如下:
..
code
::
python
import
numpy
import
paddle
from
paddle
.
imperative
import
to_variable
#
切换命令式编程模式
paddle
.
enable_imperative
()
#
创建数据
x
=
to_variable
(
numpy
.
array
([
2
]))
y
=
to_variable
(
numpy
.
array
([
3
]))
#
定义运算并执行
z
=
paddle
.
elementwise_add
(
x
,
y
)
#
输出执行结果
print
(
z
.
numpy
())
飞桨
2.0
推荐开发者使用命令式编程,可以使用原生
python
控制流
API
,具有灵活,容易开发调试的优点;同时为了兼具声明式编程在性能和部署方面的优势,飞桨提供了自动转换功能,可以将包含
python
控制流的代码,转换为
Program
,通过底层的
Executor
进行执行。
组网方式
--------
飞桨
1.
x
大量使用函数式的组网方式,这种方法的好处是写法很简洁,但表达能力偏弱,比如:如果我们想要查看
fc
隐含的参数的值或者想要对某一个参数进行裁剪时,会很困难,我们需要操作隐含的参数名才能访问。比如:
..
code
::
python
import
paddle
.
fluid
as
fluid
data
=
fluid
.
layers
.
data
(
name
=
"data"
,
shape
=[
32
,
32
],
dtype
=
"float32"
)
fc
=
fluid
.
layers
.
fc
(
input
=
data
,
size
=
1000
,
act
=
"tanh"
)
基础
API
-------
飞桨
2.0
推荐使用面向对象式的组网方式,需要通过继承
\
``
paddle
.
nn
.
Layer
``\
类的
\
``
__init__
``\
和
\
``
forward
``\
函数实现网络结构自定义,这种方式通过类的成员变量,方便地访问到每个类的成员,比如:
飞桨
2.0
提供了新的
API
,可以同时支持声明式和命令式两种开发模式,比如
paddle
.
nn
.
Linear
,避免在两种模式下使用不同的
API
造成困惑。原飞桨
1.
x
的
API
位于
paddle
.
fluid
目录下,其中部分组网类的
API
,只能用于声明式开发,比如:
fluid
.
layers
.
fc
,无法用于命令式开发。
..
code
::
python
飞桨
2.0
对
API
的目录结构进行了调整,从原来的
paddle
.
fluid
目录调整到
paddle
目录下,使得开发接口更加清晰,调整后的目录结构如下:
import
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
|
+---------------------+-----------------------------------------------------------------------------------------------------------+
class
SimpleNet
(
paddle
.
nn
.
Layer
):
def
__init__
(
self
,
in_size
,
out_size
):
super
(
SimpleNet
,
self
).
__init__
()
self
.
_linear
=
paddle
.
nn
.
Linear
(
in_size
,
out_size
)
同时飞桨
2.0
对部分
Paddle
1.
x
版本的
API
进行了清理,删除了部分不再推荐使用的
API
,具体信息请参考
Release
Note
。
def
forward
(
self
,
x
):
y
=
self
.
_linear
(
x
)
return
y
高层
API
-------
...
...
@@ -154,42 +90,6 @@ API Reference
更多高层
API
开发的模型和示例请参考
github
Repo
:
`
hapi
<
https
://
github
.
com
/
paddlepaddle
/
hapi
>`
__
基础
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
。
..
toctree
::
:
maxdepth
:
1
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录