Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
9341338b
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
8
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看板
提交
9341338b
编写于
4月 22, 2019
作者:
C
chengduozh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
follow comments
上级
1043f29b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
1 deletion
+8
-1
doc/fluid/advanced_usage/development/new_op/new_op.md
doc/fluid/advanced_usage/development/new_op/new_op.md
+8
-1
未找到文件。
doc/fluid/advanced_usage/development/new_op/new_op.md
浏览文件 @
9341338b
...
...
@@ -233,6 +233,8 @@ MulOp(const std::string &type, const framework::VariableNameMap &inputs,
通常
`OpProtoMaker`
和
`Op`
类的定义写在
`.cc`
文件中,和下面将要介绍的注册函数一起放在
`.cc`
中
**注意:**
通常
`InferShape`
操作在
[
编译时和运行时
](
https://github.com/PaddlePaddle/FluidDoc/blob/release/1.2/doc/fluid/getstarted/Developer's_Guide_to_Paddle_Fluid.md#%E8%AE%A9%E6%88%91%E4%BB%AC%E5%9C%A8fluid%E7%A8%8B%E5%BA%8F%E5%AE%9E%E4%BE%8B%E4%B8%AD%E5%8C%BA%E5%88%86%E7%BC%96%E8%AF%91%E6%97%B6%E5%92%8C%E8%BF%90%E8%A1%8C%E6%97%B6
)
都会被调用,在一些NLP任务可能会涉及到很多的变长操作,Paddle中在编译时变长使用-1表示,所以Op中在做检查或者推断输出变量的Shape时需要注意输入变量的某个维度是否可能为-1。
### 定义OpKernel类
`MulKernel`
继承自
`framework::OpKernel`
,带有下面两个模板参数:
...
...
@@ -388,6 +390,10 @@ $$Out = Act({X*W + b})$$
单测包括对比前向Op不同设备(CPU、CUDA)的实现、对比反向OP不同设备(CPU、CUDA)的实现、反向Op的梯度测试。下面介绍介绍
[
`MulOp`的单元测试
](
https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/fluid/tests/unittests/test_mul_op.py
)
。
**注意:**
单测中的测试用例需要尽可能的覆盖Op中的所有分支。
### 前向Operator单测
Op单元测试继承自
`OpTest`
。各项具体的单元测试在
`TestMulOp`
里完成。测试Operator,需要:
...
...
@@ -445,6 +451,7 @@ Op单元测试继承自`OpTest`。各项具体的单元测试在`TestMulOp`里
-
`test_check_grad_ingore_x`
和
`test_check_grad_ingore_y`
分支用来测试只需要计算一个输入梯度的情况。
### 编译和执行
`python/paddle/fluid/tests/unittests/`
目录下新增的
`test_*.py`
单元测试会被自动加入工程进行编译。
...
...
@@ -481,7 +488,7 @@ PADDLE_ENFORCE_EQ(比较对象A, 比较对象B, 错误提示信息)
#### 总体原则
任何使用了PADDLE_ENFORCE与PADDLE_ENFORCE_
检查的地方,必须有详略得当的备注解释!
**错误提示信息**
不能为空!
任何使用了PADDLE_ENFORCE与PADDLE_ENFORCE_
XX检查的地方,必须有详略得当的备注解释!
<font
color=
"#FF0000"
>
**错误提示信息不能为空!**
</font>
#### 提示信息书写标准
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录