Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
a9de00a8
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
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开发包进行安装,用户可以从下面的表格中找到需要的版本
:
必须配置选项:
-
`WITH_C_API`
,必须配置为
`ON`
。
| 版本说明 |C-API|
|-------|-----|
| 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`
### 从源码编译
可选配置选项:
-
`WITH_GPU`
,可配置为
`ON/OFF`
-
`WITH_MKL`
,可配置为
`ON/OFF`
用户也可以从 PaddlePaddle 核心代码编译C-API链接库,只需在编译时配制下面这些编译选项:
对推荐配置中的选项建议按照设置,以避免链接不必要的库。其它可选编译选项按需进行设定。
| 选项 | 值 |
|----------------|----|
| 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预测库的安装路径):
...
...
@@ -100,23 +110,19 @@ cmake -DCMAKE_INSTALL_PREFIX=$PADDLE_ROOT \
目前提供三种链接方式:
1.
链接
`libpaddle_capi_shared.so`
动态库
-
使用 PaddlePaddle C-API 开发预测程序链接
`libpaddle_capi_shared.so`
时,需注意:
1.
如果编译时指定编译CPU版本,且使用
`OpenBLAS`
数学库,在使用C-API开发预测程序时,只需要链接
`libpaddle_capi_shared.so`
这一个库。
1.
如果是用编译时指定CPU版本,且使用
`MKL`
数学库,由于
`MKL`
库有自己独立的动态库文件,在使用PaddlePaddle C-API开发预测程序时,需要自己链接MKL链接库。
1.
如果编译时指定编译GPU版本,CUDA相关库会在预测程序运行时动态装载,需要将CUDA相关的库设置到
`LD_LIBRARY_PATH`
环境变量中。
-
这种方式最为简便,链接相对容易,
**在无特殊需求情况下,推荐使用此方式**
。
2.
链接静态库
`libpaddle_capi_whole.a`
-
使用PaddlePaddle C-API 开发预测程序链接
`libpaddle_capi_whole.a`
时,需注意:
1.
需要指定
`-Wl,--whole-archive`
链接选项。
1.
需要显式地链接
`gflags`
、
`glog`
、
`libz`
、
`protobuf`
等第三方库,可在
`PADDLE_ROOT/third_party`
下找到。
1.
如果在编译 C-API 时使用OpenBLAS数学库,需要显示地链接
`libopenblas.a`
。
1.
如果在编译 C-API 是使用MKL数学库,需要显示地链接MKL的动态库。
3.
链接静态库
`libpaddle_capi_layers.a`
和
`libpaddle_capi_engine.a`
-
使用PaddlePaddle C-API 开发预测程序链接
`libpaddle_capi_whole.a`
时,需注意:
1.
这种链接方式主要用于移动端预测。
1.
为了减少生成链接库的大小把
`libpaddle_capi_whole.a`
拆成以上两个静态链接库。
1.
需指定
`-Wl,--whole-archive -lpaddle_capi_layers`
和
`-Wl,--no-whole-archive -lpaddle_capi_engine`
进行链接。
1.
第三方依赖库需要按照与方式2同样方法显示地进行链接。
1.
链接
`libpaddle_capi_shared.so`
动态库(这种方式最为简便,链接相对容易,
**在无特殊需求情况下,推荐使用此方式**
),需注意:
1.
如果编译时指定编译CPU版本,且使用
`OpenBLAS`
数学库,在使用C-API开发预测程序时,只需要链接
`libpaddle_capi_shared.so`
这一个库。
1.
如果是用编译时指定CPU版本,且使用
`MKL`
数学库,由于
`MKL`
库有自己独立的动态库文件,在使用PaddlePaddle C-API开发预测程序时,需要自己链接MKL链接库。
1.
如果编译时指定编译GPU版本,CUDA相关库会在预测程序运行时动态装载,需要将CUDA相关的库设置到
`LD_LIBRARY_PATH`
环境变量中。
2.
链接静态库
`libpaddle_capi_whole.a`
,需注意:
1.
需要指定
`-Wl,--whole-archive`
链接选项。
1.
需要显式地链接
`gflags`
、
`glog`
、
`libz`
、
`protobuf`
等第三方库,可在
`PADDLE_ROOT/third_party`
下找到。
1.
如果在编译 C-API 时使用OpenBLAS数学库,需要显示地链接
`libopenblas.a`
。
1.
如果在编译 C-API 是使用MKL数学库,需要显示地链接MKL的动态库。
3.
链接静态库
`libpaddle_capi_layers.a`
和
`libpaddle_capi_engine.a`
,需注意:
1.
这种链接方式主要用于移动端预测。
1.
为了减少生成链接库的大小把
`libpaddle_capi_whole.a`
拆成以上两个静态链接库。
1.
需指定
`-Wl,--whole-archive -lpaddle_capi_layers`
和
`-Wl,--no-whole-archive -lpaddle_capi_engine`
进行链接。
1.
第三方依赖库需要按照与方式2同样方法显示地进行链接。
doc/v2/howto/rnn/hierarchical_layer_cn.rst
浏览文件 @
a9de00a8
...
...
@@ -22,7 +22,7 @@
pooling
========
pooling 的使用示例如下
,详细见 :ref:`api_v2.layer_pooling` 配置API
。
pooling 的使用示例如下。
.. code-block:: bash
...
...
@@ -47,7 +47,7 @@ pooling 的使用示例如下,详细见 :ref:`api_v2.layer_pooling` 配置API
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
...
...
@@ -68,7 +68,7 @@ last_seq 的使用示例如下( :ref:`api_v2.layer_first_seq` 类似),详
expand
======
expand 的使用示例如下
,详细见 :ref:`api_v2.layer_expand` 配置API
。
expand 的使用示例如下。
.. code-block:: bash
...
...
doc/v2/howto/rnn/hrnn_rnn_api_compare_cn.rst
浏览文件 @
a9de00a8
...
...
@@ -4,7 +4,7 @@
单双层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
================================
...
...
@@ -166,11 +166,6 @@
在上面代码中,单层和双层序列的使用和示例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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录