未验证 提交 5933d629 编写于 作者: C Cheerego 提交者: GitHub

Deadlink fix 0325 (#721) (#722)

* deadlink0325

* update
上级 69384653
# 如何写新的op
- [概念简介](#概念简介)
- [实现C++类](#实现c类)
- [定义ProtoMaker类](#定义protomaker类)
- [定义Operator类](#定义operator类)
- [定义OpKernel类](#定义opkernel类)
- [注册Operator](#注册operator)
- [编译](#编译)
- [绑定Python](#绑定python)
- [实现单元测试](#实现单元测试)
- [前向Operator单测](#前向operator单测)
- [反向Operator单测](#反向operator单测)
- [编译和执行](#编译和执行)
- [注意事项](#注意事项)
## 概念简介
简单介绍需要用到基类,详细介绍请参考设计文档。
......@@ -92,7 +77,7 @@ The equation is: Out = X * Y
构造函数里通过`AddInput`添加输入参数,通过`AddOutput`添加输出参数,通过`AddComment`添加Op的注释。这些函数会将对应内容添加到`OpProto`中。
上面的代码在`MulOp`中添加两个输入`X``Y`,添加了一个输出`Out`,并解释了各自含义,命名请遵守[命名规范](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/fluid/dev/name_convention.md)
上面的代码在`MulOp`中添加两个输入`X``Y`,添加了一个输出`Out`,并解释了各自含义,命名请遵守[命名规范](https://github.com/PaddlePaddle/FluidDoc/blob/release/1.2/doc/fluid/dev/name_convention.md)
再以[`ScaleOp`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/operators/scale_op.cc#L38-L55)为例:
......
# How to write a new operator
<!--## Table of Contents
- [How to write a new operator](#How to write a new operator)
- [Background](#Background)
- [Implementing C++ Types](#Implementing C++ Types)
- [Defining ProtoMaker](#Defining ProtoMaker)
- [Defining the GradProtoMaker class](#Defining the GradProtoMaker class)
- [Defining Operator](#Defining Operator)
- [Defining OpKernel](#Defining OpKernel)
- [Registering Operator and OpKernel](#Registering Operator and OpKernel)
- [Compilation](#Compilation)
- [Python Binding](#Python Binding)
- [Unit Tests](#Unit Tests)
- [Unit Test for Forward Operators](#Unit Test for Forward Operators)
- [Unit test for backward operators](#Unit test for backward operators)
- [Compiling and Running](#Compiling and Running)
- [Remarks](#Remarks)
- [PADDLE_ENFORCE Usage Note](#PADDLE_ENFORCE Usage Note)
- [General Principles](#General Principles)
- [Error Message Standard](#Error Message Standard)
- [Typical Problems](#Typical Problems)
- [OP InferShape check message special instructions](#OP InferShape check message special instructions)
-->
<a name="Background"></a>
## Background
......
......@@ -92,7 +92,7 @@ Operator继承关系图:
5. 框架没有提供默认的op_infer_var_type方法,用户需要根据实际情况添加op_infer_var_shape。严格来说每个Op都应该注册一个InferVarType,op_infer_var_type根据输入的Var的type和dtype推断输出Var的type和dtype。**注意:**在Python端的LayerHelper中create_variable_for_type_inference操作返回的Variable里面是LoDTensor,C++端的InferVarType可以修改`Variable`的type和dtype。
更多内容请参考: [如何写新的Op](../new_op.html)
更多内容请参考: [如何写新的Op](new_op.html)
## 写Op注意事项
### 1.Op可以支持输入输出类型
......
......@@ -13,7 +13,7 @@ Step1: 自定义Reader生成训练/预测数据
Batch级的Reader每次返回一个Batch的数据,Sample级的Reader每次返回单个样本的数据
如果您的数据是Sample级的数据,我们提供了一个可以组建batch及数据预处理的工具::code:`Python Reader` 。
如果您的数据是Sample级的数据,我们提供了一个可以数据预处理和组建batch的工具::code:`Python Reader` 。
Step2: 将数据送入网络进行训练/预测
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册