Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
a9de00a8
P
Paddle
项目概览
Crayon鑫
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a9de00a8
编写于
3月 06, 2018
作者:
R
ranqiu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refine doc
上级
0e1f82fd
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
43 addition
and
42 deletion
+43
-42
doc/v2/howto/capi/compile_paddle_lib_cn.md
doc/v2/howto/capi/compile_paddle_lib_cn.md
+39
-33
doc/v2/howto/rnn/hierarchical_layer_cn.rst
doc/v2/howto/rnn/hierarchical_layer_cn.rst
+3
-3
doc/v2/howto/rnn/hrnn_rnn_api_compare_cn.rst
doc/v2/howto/rnn/hrnn_rnn_api_compare_cn.rst
+1
-6
未找到文件。
doc/v2/howto/capi/compile_paddle_lib_cn.md
浏览文件 @
a9de00a8
## 安装
与编译
C-API预测库
## 安装
、编译与链接
C-API预测库
###
概述
###
直接下载安装
使用 C-API 进行预测依赖于将 PaddlePaddle 核心代码编译成链接库,只需在编译时需配制下面这些编译选项
:
从CI系统中下载最新的C-API开发包进行安装,用户可以从下面的表格中找到需要的版本
:
必须配置选项:
| 版本说明 |C-API|
-
`WITH_C_API`
,必须配置为
`ON`
。
|-------|-----|
| cpu
\_
avx
\_
mkl |
[
paddle.tgz
](
https://guest:@paddleci.ngrok.io/repository/download/Manylinux1_CpuAvxCp27cp27mu/.lastSuccessful/paddle.tgz
)
|
| cpu
\_
avx
\_
openblas | 暂无 |
| cpu
\_
noavx
\_
openblas | 暂无 |
| cuda7.5
\_
cudnn5
\_
avx
\_
mkl |
[
paddle.tgz
](
https://guest:@paddleci.ngrok.io/repository/download/Manylinux1_Cuda75cudnn5cp27cp27mu/.lastSuccessful/paddle.tgz
)
|
| cuda8.0
\_
cudnn5
\_
avx
\_
mkl |
[
paddle.tgz
](
https://guest:@paddleci.ngrok.io/repository/download/Manylinux1_Cuda80cudnn5cp27cp27mu/.lastSuccessful/paddle.tgz
)
|
| cuda8.0
\_
cudnn7
\_
avx
\_
mkl |
[
paddle.tgz
](
https://guest:@paddleci.ngrok.io/repository/download/Manylinux1_Cuda8cudnn7cp27cp27mu/.lastSuccessful/paddle.tgz
)
|
推荐配置选项:
### 从源码编译
-
`WITH_PYTHON`
,推荐配置为
`OFF`
-
`WITH_SWIG_PY`
,推荐配置为
`OFF`
-
`WITH_GOLANG`
,推荐设置为
`OFF`
可选配置选项:
用户也可以从 PaddlePaddle 核心代码编译C-API链接库,只需在编译时配制下面这些编译选项:
-
`WITH_GPU`
,可配置为
`ON/OFF`
-
`WITH_MKL`
,可配置为
`ON/OFF`
对推荐配置中的选项建议按照设置,以避免链接不必要的库。其它可选编译选项按需进行设定。
| 选项 | 值 |
|----------------|----|
| WITH
\_
C
\_
API | ON |
| WITH
\_
PYTHON | OFF(推荐) |
| WITH
\_
SWIG
\_
PY | OFF(推荐) |
| WITH
\_
GOLANG | OFF(推荐) |
| WITH
\_
GPU | ON/OFF |
| WITH
\_
MKL | ON/OFF |
建议按照推荐值设置,以避免链接不必要的库。其它可选编译选项按需进行设定。
下面的代码片段从github拉取最新代码,配制编译选项(需要将PADDLE_ROOT替换为PaddlePaddle预测库的安装路径):
下面的代码片段从github拉取最新代码,配制编译选项(需要将PADDLE_ROOT替换为PaddlePaddle预测库的安装路径):
...
@@ -100,22 +110,18 @@ cmake -DCMAKE_INSTALL_PREFIX=$PADDLE_ROOT \
...
@@ -100,22 +110,18 @@ cmake -DCMAKE_INSTALL_PREFIX=$PADDLE_ROOT \
目前提供三种链接方式:
目前提供三种链接方式:
1.
链接
`libpaddle_capi_shared.so`
动态库
1.
链接
`libpaddle_capi_shared.so`
动态库(这种方式最为简便,链接相对容易,
**在无特殊需求情况下,推荐使用此方式**
),需注意:
-
使用 PaddlePaddle C-API 开发预测程序链接
`libpaddle_capi_shared.so`
时,需注意:
1.
如果编译时指定编译CPU版本,且使用
`OpenBLAS`
数学库,在使用C-API开发预测程序时,只需要链接
`libpaddle_capi_shared.so`
这一个库。
1.
如果编译时指定编译CPU版本,且使用
`OpenBLAS`
数学库,在使用C-API开发预测程序时,只需要链接
`libpaddle_capi_shared.so`
这一个库。
1.
如果是用编译时指定CPU版本,且使用
`MKL`
数学库,由于
`MKL`
库有自己独立的动态库文件,在使用PaddlePaddle C-API开发预测程序时,需要自己链接MKL链接库。
1.
如果是用编译时指定CPU版本,且使用
`MKL`
数学库,由于
`MKL`
库有自己独立的动态库文件,在使用PaddlePaddle C-API开发预测程序时,需要自己链接MKL链接库。
1.
如果编译时指定编译GPU版本,CUDA相关库会在预测程序运行时动态装载,需要将CUDA相关的库设置到
`LD_LIBRARY_PATH`
环境变量中。
1.
如果编译时指定编译GPU版本,CUDA相关库会在预测程序运行时动态装载,需要将CUDA相关的库设置到
`LD_LIBRARY_PATH`
环境变量中。
-
这种方式最为简便,链接相对容易,
**在无特殊需求情况下,推荐使用此方式**
。
2.
链接静态库
`libpaddle_capi_whole.a`
2.
链接静态库
`libpaddle_capi_whole.a`
,需注意:
-
使用PaddlePaddle C-API 开发预测程序链接
`libpaddle_capi_whole.a`
时,需注意:
1.
需要指定
`-Wl,--whole-archive`
链接选项。
1.
需要指定
`-Wl,--whole-archive`
链接选项。
1.
需要显式地链接
`gflags`
、
`glog`
、
`libz`
、
`protobuf`
等第三方库,可在
`PADDLE_ROOT/third_party`
下找到。
1.
需要显式地链接
`gflags`
、
`glog`
、
`libz`
、
`protobuf`
等第三方库,可在
`PADDLE_ROOT/third_party`
下找到。
1.
如果在编译 C-API 时使用OpenBLAS数学库,需要显示地链接
`libopenblas.a`
。
1.
如果在编译 C-API 时使用OpenBLAS数学库,需要显示地链接
`libopenblas.a`
。
1.
如果在编译 C-API 是使用MKL数学库,需要显示地链接MKL的动态库。
1.
如果在编译 C-API 是使用MKL数学库,需要显示地链接MKL的动态库。
3.
链接静态库
`libpaddle_capi_layers.a`
和
`libpaddle_capi_engine.a`
3.
链接静态库
`libpaddle_capi_layers.a`
和
`libpaddle_capi_engine.a`
,需注意:
-
使用PaddlePaddle C-API 开发预测程序链接
`libpaddle_capi_whole.a`
时,需注意:
1.
这种链接方式主要用于移动端预测。
1.
这种链接方式主要用于移动端预测。
1.
为了减少生成链接库的大小把
`libpaddle_capi_whole.a`
拆成以上两个静态链接库。
1.
为了减少生成链接库的大小把
`libpaddle_capi_whole.a`
拆成以上两个静态链接库。
1.
需指定
`-Wl,--whole-archive -lpaddle_capi_layers`
和
`-Wl,--no-whole-archive -lpaddle_capi_engine`
进行链接。
1.
需指定
`-Wl,--whole-archive -lpaddle_capi_layers`
和
`-Wl,--no-whole-archive -lpaddle_capi_engine`
进行链接。
...
...
doc/v2/howto/rnn/hierarchical_layer_cn.rst
浏览文件 @
a9de00a8
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
pooling
pooling
========
========
pooling 的使用示例如下
,详细见 :ref:`api_v2.layer_pooling` 配置API
。
pooling 的使用示例如下。
.. code-block:: bash
.. code-block:: bash
...
@@ -47,7 +47,7 @@ pooling 的使用示例如下,详细见 :ref:`api_v2.layer_pooling` 配置API
...
@@ -47,7 +47,7 @@ pooling 的使用示例如下,详细见 :ref:`api_v2.layer_pooling` 配置API
last_seq 和 first_seq
last_seq 和 first_seq
=====================
=====================
last_seq 的使用示例如下(
:ref:`api_v2.layer_first_seq` 类似),详细见 :ref:`api_v2.layer_last_seq` 配置API
。
last_seq 的使用示例如下(
first_seq 类似)
。
.. code-block:: bash
.. code-block:: bash
...
@@ -68,7 +68,7 @@ last_seq 的使用示例如下( :ref:`api_v2.layer_first_seq` 类似),详
...
@@ -68,7 +68,7 @@ last_seq 的使用示例如下( :ref:`api_v2.layer_first_seq` 类似),详
expand
expand
======
======
expand 的使用示例如下
,详细见 :ref:`api_v2.layer_expand` 配置API
。
expand 的使用示例如下。
.. code-block:: bash
.. code-block:: bash
...
...
doc/v2/howto/rnn/hrnn_rnn_api_compare_cn.rst
浏览文件 @
a9de00a8
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
单双层RNN API对比介绍
单双层RNN API对比介绍
#####################
#####################
本文以PaddlePaddle的双层RNN单元测试为示例,用多对效果完全相同的、分别使用单双层RNN作为网络配置的模型,来讲解如何使用双层RNN。本文中所有的例子,都只是介绍双层RNN的API接口,并不是使用双层RNN解决实际的问题。如果想要了解双层RNN在具体问题中的使用,请参考\ :ref:`algo_hrnn_demo`\ 。本文中示例所使用的单元测试文件是\ `test_RecurrentGradientMachine.cpp <https://github.com/
reyoung
/Paddle/blob/develop/paddle/gserver/tests/test_RecurrentGradientMachine.cpp>`_\ 。
本文以PaddlePaddle的双层RNN单元测试为示例,用多对效果完全相同的、分别使用单双层RNN作为网络配置的模型,来讲解如何使用双层RNN。本文中所有的例子,都只是介绍双层RNN的API接口,并不是使用双层RNN解决实际的问题。如果想要了解双层RNN在具体问题中的使用,请参考\ :ref:`algo_hrnn_demo`\ 。本文中示例所使用的单元测试文件是\ `test_RecurrentGradientMachine.cpp <https://github.com/
PaddlePaddle
/Paddle/blob/develop/paddle/gserver/tests/test_RecurrentGradientMachine.cpp>`_\ 。
示例1:双层RNN,子序列间无Memory
示例1:双层RNN,子序列间无Memory
================================
================================
...
@@ -166,11 +166,6 @@
...
@@ -166,11 +166,6 @@
在上面代码中,单层和双层序列的使用和示例2中的示例类似,区别是同时处理了两个输入。而对于双层序列,两个输入的子序列长度也并不相同。但是,我们使用了\ :code:`targetInlink`\ 参数设置了外层\ :code:`recurrent_group`\ 的输出格式。所以外层输出的序列形状,和\ :code:`emb2`\ 的序列形状一致。
在上面代码中,单层和双层序列的使用和示例2中的示例类似,区别是同时处理了两个输入。而对于双层序列,两个输入的子序列长度也并不相同。但是,我们使用了\ :code:`targetInlink`\ 参数设置了外层\ :code:`recurrent_group`\ 的输出格式。所以外层输出的序列形状,和\ :code:`emb2`\ 的序列形状一致。
示例4:beam_search的生成
========================
TBD
词汇表
词汇表
======
======
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录