Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle-Lite
提交
b2fc597d
P
Paddle-Lite
项目概览
PaddlePaddle
/
Paddle-Lite
通知
332
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
271
列表
看板
标记
里程碑
合并请求
78
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle-Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
271
Issue
271
列表
看板
标记
里程碑
合并请求
78
合并请求
78
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
b2fc597d
编写于
10月 31, 2019
作者:
J
juncaipeng
提交者:
GitHub
10月 31, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix error of docs, test=develop (#2309)
上级
5b108807
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
15 deletion
+14
-15
_all_pages/develop/add_new_operation.md
_all_pages/develop/add_new_operation.md
+10
-10
_all_pages/develop/model_quantization.md
_all_pages/develop/model_quantization.md
+4
-5
未找到文件。
_all_pages/develop/add_new_operation.md
浏览文件 @
b2fc597d
...
...
@@ -3,7 +3,7 @@ layout: post
title
:
新增op的方法
---
以下以添加argmax为例,详细说明新增op的方法
步骤
。
以下以添加argmax为例,详细说明新增op的方法。
## 1. 添加OpParam 结构体以传导 Op 的输入和输出
...
...
@@ -76,10 +76,10 @@ title: 新增op的方法
}
REGISTER_LITE_OP
(
argmax
,
paddle
::
lite
::
operators
::
ArgmaxOpLite
);
```
-
在paddlelite/lite/operators/CMakeLists.txt中添加
```lite_cc_library(argmax_op SRCS argmax_op.cc DEPS ${op_DEPS})```
,并且在set ops lite 中添加argmax_op;
-
在paddlelite/lite/api/paddle_use_ops.h中添加
```USE_LITE_OP(argmax)```
。
-
在paddlelite/lite/operators/CMakeLists.txt中添加
```add_operator(argmax_op basic SRCS argmax_op.cc DEPS ${op_DEPS})```
## 3. 添加Argmax Kernel并绑定
以下以arm端argmax实现为例说明
-
在paddlelite/lite/kernels/arm/目录下新建argmax_compute.h文件,声明ArgmaxCompute类,并继承KernelLite,主要代码如下:
```
c++
...
...
@@ -90,7 +90,7 @@ title: 新增op的方法
virtual
~
ArgmaxCompute
()
=
default
;
};
```
-
在paddlelite/lite/kernels/arm/目录下新建argmax_compute.cc文件,主要实现Run函数。
`Run()`
函数调用paddlelite/lite/arm/math/argmax.h中的
`argmax_func()`
函数,根据输入计算输出。最后在argmax_compute.cc文件中,我们绑定argmax的输入输出(为tensor的输入参数都需要绑定),代码如下:
-
在paddlelite/lite/kernels/arm/目录下新建argmax_compute.cc文件,主要实现Run函数。
`Run()`
函数调用paddlelite/lite/
bachends/
arm/math/argmax.h中的
`argmax_func()`
函数,根据输入计算输出。最后在argmax_compute.cc文件中,我们绑定argmax的输入输出(为tensor的输入参数都需要绑定),代码如下:
```
c++
void
ArgmaxCompute
::
Run
()
{
auto
&
param
=
Param
<
operators
::
ArgmaxParam
>
();
...
...
@@ -110,17 +110,16 @@ title: 新增op的方法
-
在paddlelite/lite/kernels/arm/CMakeLists.txt中添加
```
cmake
lite_cc_library
(
argmax_compute_arm
SRCS argmax_compute.cc DEPS
${
lite_kernel_deps
}
math_arm
)
add_kernel
(
argmax_compute_arm ARM basic
SRCS argmax_compute.cc DEPS
${
lite_kernel_deps
}
math_arm
)
```
CMakeLists.txt中set arm_kernels需要添加argmax_compute_arm;
-
在paddlelite/lite/api/paddle_use_kernels.h中添加
```USE_LITE_KERNEL(argmax, kARM, kFloat, kNCHW, def)```
。
## 4. 添加Argmax实现
-
在paddlelite/lite/arm/math/目录下新建argmax.h文件,声明
`argmax_func()`
函数,代码如下:
-
在paddlelite/lite/backends/arm/math/目录下新建argmax.h文件,声明
`argmax_func()`
函数,代码如下:
```
c++
void
argmax_func
(
const
lite
::
Tensor
*
input
,
const
int
axis
,
lite
::
Tensor
*
output
);
```
-
在paddlelite/lite/arm/math/目录下新建argmax.cc文件,具体实现
`argmax_func()`
函数,代码如下:
-
在paddlelite/lite/
backends/
arm/math/目录下新建argmax.cc文件,具体实现
`argmax_func()`
函数,代码如下:
```
c++
void
argmax_func
(
const
lite
::
Tensor
*
input
,
const
int
axis
,
...
...
@@ -155,9 +154,10 @@ title: 新增op的方法
}
}
```
-
在paddlelite/lite/
arm/math/CMakeFile.txt中的
```math_arm library```
中添加argmax.cc,在paddlelite/lite
/arm/math/funcs.h中添加
```#include "lite/arm/math/argmax.h"```
-
在paddlelite/lite/
backends/arm/math/CMakeFile.txt中的
```math_arm library```
中添加argmax.cc,在paddlelite/lite/backends
/arm/math/funcs.h中添加
```#include "lite/arm/math/argmax.h"```
## 5. 添加Argmax单测
-
在paddlelite/lite/tests/kernels目录下新建argmax_compute_test.cc文件,声明并实现ArgmaxComputeTester类;
-
ArgmaxComputeTester类中主要包括PrepareOpDesc、PrepareData和RunBaseline函数。PrepareOpDesc函数设定单测op的类型和输入输出参数,PrepareData函数对输入tensor进行初始化,RunBaseline是基于输入计算得到输出,用于和框架计算的输出进行对比;
-
使用gtest添加单测,代码如下:
...
...
_all_pages/develop/model_quantization.md
浏览文件 @
b2fc597d
...
...
@@ -7,7 +7,7 @@ title: 模型量化
本文主要介绍使用PaddlePaddle和Paddle-Lite对模型进行端到端的量化训练和推理执行,模型示例为MobileNetV1。
目前,PaddlePaddle框架的量化训练主要针对卷积层(包括二维卷积和Depthwise卷积)、
全连接层和Pool2D(Max类型),对应算子是conv2d、depthwise_conv2d、mul和Pool2D
,更多量化训练的原理请参考
[
文档
](
https://github.com/PaddlePaddle/models/blob/develop/PaddleSlim/docs/tutorial.md#1-quantization-aware-training%E9%87%8F%E5%8C%96%E4%BB%8B%E7%BB%8D
)
。Paddle-Lite支持运行PaddlePaddle框架量化训练产出的模型,可以进一步加快模型在移动端的执行速度。
目前,PaddlePaddle框架的量化训练主要针对卷积层(包括二维卷积和Depthwise卷积)、
和全连接层,对应算子是conv2d、depthwise_conv2d和mul
,更多量化训练的原理请参考
[
文档
](
https://github.com/PaddlePaddle/models/blob/develop/PaddleSlim/docs/tutorial.md#1-quantization-aware-training%E9%87%8F%E5%8C%96%E4%BB%8B%E7%BB%8D
)
。Paddle-Lite支持运行PaddlePaddle框架量化训练产出的模型,可以进一步加快模型在移动端的执行速度。
温馨提示:如果您是初次接触PaddlePaddle框架,建议首先学习
[
新人入门
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/beginners_guide/index_cn.html
)
和
[
使用指南
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/user_guides/index_cn.html
)
。
...
...
@@ -27,16 +27,16 @@ wget https://paddle-inference-dist.bj.bcebos.com/int8%2Fpretrain%2Fmobilenet_v1_
#### 安装PaddlePaddle
根据操作系统、安装方式、Python版本和CUDA版本,按照
[
官方说明
](
https://paddlepaddle.org.cn/start
)
安装
1.5.1版本的
PaddlePaddle。例如:
根据操作系统、安装方式、Python版本和CUDA版本,按照
[
官方说明
](
https://paddlepaddle.org.cn/start
)
安装PaddlePaddle。例如:
Ubuntu 16.04.4 LTS操作系统,CUDA9,cuDNN7,GPU版本安装:
```
bash
pip
install
paddlepaddle-gpu
==
1.
5.1
.post97
-i
https://mirrors.aliyun.com/pypi/simple/
pip
install
paddlepaddle-gpu
==
1.
6.0
.post97
-i
https://mirrors.aliyun.com/pypi/simple/
```
Ubuntu 16.04.4 LTS操作系统,CPU版本安装:
```
bash
pip
install
paddlepaddle
==
1.
5.1
-i
https://mirrors.aliyun.com/pypi/simple/
pip
install
paddlepaddle
==
1.
6.0
-i
https://mirrors.aliyun.com/pypi/simple/
```
#### 克隆量化训练所需的代码库
...
...
@@ -282,4 +282,3 @@ Output[900]: 0.000969
**问题**
:Inufficient GPU memory to allocation. at [/paddle/paddle/fluid/platform/gpu_info.cc:262]
**解答**
:正确设置run.sh脚本中
`CUDA_VISIBLE_DEVICES`
,确保显卡剩余内存大于需要内存。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录