From ff3ec3c438e9c68b663fc42b4362a5b780e5f741 Mon Sep 17 00:00:00 2001
From: Zhuoyuan <chenzhuoyuan07@gmail.com>
Date: Mon, 28 Aug 2017 11:37:15 -0700
Subject: [PATCH 01/72] switch_op.h

---
 paddle/operators/switch_op.h | 143 +++++++++++++++++++++++++++++++++++
 1 file changed, 143 insertions(+)
 create mode 100644 paddle/operators/switch_op.h

diff --git a/paddle/operators/switch_op.h b/paddle/operators/switch_op.h
new file mode 100644
index 0000000000..f72726bce1
--- /dev/null
+++ b/paddle/operators/switch_op.h
@@ -0,0 +1,143 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */
+
+#pragma once
+#include "glog/logging.h"
+#include "paddle/framework/eigen.h"
+#include "paddle/framework/operator.h"
+#include "paddle/framework/ddim.h"
+#include "paddle/operators/gather.h"
+
+namespace paddle {
+namespace operators {
+
+using namespace paddle::framework;
+
+template <typename Place, typename T>
+class CondOp final : public OperatorBase {
+public:
+  void Init() override;
+
+  /**
+   * InferShape must be called before Run.
+   */
+  virtual void InferShape(const std::shared_ptr<Scope>& scope) const override {
+    scope_t = scope.NewScope();
+    scope_f = scope.NewScope();
+    net_op_t->InferShape(scope_t);
+    net_op_f->InferShape(scope_f);
+    tensor_t = new Tensor();
+    tensor_f = new Tensor();
+    { // True branch
+      for (auto& input : net_op_t->Inputs()) {
+        auto var_name = input.second;
+        if (!scope_t.FindVar(var_name) {
+          scope_t.NewVar(var_name)->GetMutable<Tensor>();
+        }
+      }
+    }
+    { // False branch
+      for (auto& input : net_op_f->Inputs()) {
+        auto var_name = input.second;
+        if (!scope_f.FindVar(var_name) {
+          scope_f.NewVar(var_name)->GetMutable<Tensor>();
+        }
+      }
+    }
+  }
+
+  virtual void Run(const std::shared_ptr<Scope>& scope,
+                   const platform::DeviceContext& dev_ctx) const override {
+    auto* cond = context.Input<Tensor>("Cond");
+    // Step 1: get the index
+    true_index.clear();
+    false_index.clear();
+    for(int i = 0; i < cond->dims()[0]; ++i) {
+      if (cond->data<bool>()[i])
+        true_index.push_back(i);
+      else:
+        false_index.push_back(i);
+    }
+    framework::DDim dim_ = paddle::framework::make_ddim({0});
+    dim_[0] = true_index.size();
+    tensor_t->Resize(dim_);
+    // set value
+    for (int i = 0; i < dim_[0]; ++i)
+      tensor_t->mutable_data<int>()[i] = true_index[i];
+    dim_[0] = false_index.size();
+    tensor_f->Resize(dim_);
+    // set value
+    for (int i = 0; i < dim_[0]; ++i)
+      tensor_f->mutable_data<int>()[i] = false_index[i];
+    
+    // Step 2: collect data by calling gather
+    { // True branch
+      for (auto& input : net_op_t->Inputs()) {
+        auto var_name = input.second;
+        // find Tensor
+        Tensor* Tensor_parent = scope.FindVar(var_name)->GetMutable<Tensor>();
+        Tensor* Tensor_child = scope_t.FindVar(var_name)->GetMutable<Tensor>();
+        Gather<T>(dev_ctx.GetPlace(), tensor_parent, tensor_t, tensor_child); 
+      }
+      
+    }
+  }
+
+private:
+  Scope* scope_t;
+  Scope* scope_f;
+
+  // subnet_t
+  std::unique_ptr<framework::OperatorBase> net_op_t;
+  // NetOp* net_op_t;
+  // subnet_f
+  std::unique_ptr<framework::OperatorBase> net_op_f;
+  // NetOp* net_op_f;
+
+  // T_index
+  vector<int> true_index;
+  Tensor* tensor_t;
+  // F_index
+  vector<int> false_index;
+  Tensor* tensor_f;
+};
+
+class CondOpMaker : public OpProtoAndCheckerMaker {
+public:
+  IfElseOpMaker(OpProto *proto, OpAttrChecker *op_checker)
+      : OpProtoAndCheckerMaker(proto, op_checker) {
+    AddInput("Cond", "The condition, which is a bool vector");
+    AddAttr<std::string>("subnet_t", "The subnet network to be called when Cond[i] == true");
+    AddAttr<std::string>("subnet_f", "The subnet network to be called when Cond[i] == false");
+    AddOutput("Out", "The output of if-else op");
+    AddComment(R"DOC(
+Sample dependent Cond Operator:
+The equation is: Out[i] = subnet_t[i], if Cond[i] == true
+Out[i] = subnet_t[i], if Cond[i] == false
+)DOC");
+  }
+};
+
+class CondGradientOp final : public OperatorBase {
+public:
+	void Init() override;
+
+	virtual void InferShape(const std::shared_ptr<Scope>& scope) const override;
+
+	virtual void Run(const std::shared_ptr<Scope>& scope,
+                   const platform::DeviceContext& dev_ctx) const override;
+};
+
+}  // namespace operators
+}  // namespace paddle

From f075141b9144b6fdb91ccc2af9216601d70568c5 Mon Sep 17 00:00:00 2001
From: Zhuoyuan <chenzhuoyuan07@gmail.com>
Date: Mon, 28 Aug 2017 11:37:49 -0700
Subject: [PATCH 02/72] switch_op.cc

---
 paddle/operators/switch_op.cc | 120 ++++++++++++++++++++++++++++++++++
 1 file changed, 120 insertions(+)
 create mode 100644 paddle/operators/switch_op.cc

diff --git a/paddle/operators/switch_op.cc b/paddle/operators/switch_op.cc
new file mode 100644
index 0000000000..09574a89a3
--- /dev/null
+++ b/paddle/operators/switch_op.cc
@@ -0,0 +1,120 @@
+#include "paddle/operators/switch_op.h"
+
+namespace paddle {
+namespace operators {
+
+// namespace if_else{
+
+
+void CondOp::Init() override {
+}
+
+void InferShape(const std::shared_ptr<Scope>& scope) const override {
+  subnet_t = GetAttr<std::string>("subnet_t");
+  subnet_f = GetAttr<std::string>("subnet_f");
+
+  // Create two Nets
+  // I use the same style as Recurrent_op, but does it create the net?
+  // can be called like
+  Variable* net_t = scope.FindVar(subnet_t);
+  Variable* net_f = scope.FindVar(subnet_f);
+
+  net_op_t = scope.FindVar(net_t)->GetMutable<NetOp>();
+  net_op_f = scope.FindVar(net_f)->GetMutable<NetOp>();
+
+  // Create two scopes
+  scope_t = scope.NewScope();
+  scope_f = scope.NewScope();
+
+  // check cond of size (batch_size), type bool
+  net_op_t->InferShape(scope_t);
+  net_op_f->InferShape(scope_f);
+
+  // check net_op_t and net_op_f of exactly same shape?
+}
+
+void IfElseOp::Run(const std::shared_ptr<Scope>& scope,
+                   const platform::DeviceContext& dev_ctx) const {
+  /* step 1: create two subnets and scopes, supposed done in Infershape() */
+
+  /* step 2: get true and false index */
+  cond = Input(name.cond);
+  // get condition tensor
+  auto cond_tensor = scope.get<Tensor>(cond);
+  // tensor to cpu, whatever device it used to be in
+  cond_cpu.CopyFrom(cond_tensor, platform::CPUPlace());
+
+  size_t batch_size = cond_cpu.dims()[0];
+
+  // keep index of true and false to slice, clear them first before each batch
+  true_index.clear();
+  false_index.clear();
+  	
+  // get a DDim type variable dims, check dimension
+  auto dims = input0.dims();
+  for(int i=0; i<dims; i++) {
+    if (cond_cpu->data[i])
+      true_index.push_back(i);
+    else
+      false_index.push_back(i);
+  }
+
+  // turn true_index and false_index to tensors
+  Tensor* true_index_tensor = new Tensor(true_index);
+  Tensor* false_index_tensor = new Tensor(false_index);
+
+  /* Step 3: Gather */
+  { // True Scope
+    // Create new stuff
+    for (auto& input : net_op_t->inputs_) {
+      scope_t.NewVar(input);
+      if (input.type() != PARAMETER) { // gather and slice required
+        // Get Tensor and gather
+        Tensor* input_gather_ = scope_t.FindVar(input)->GetMutable<Tensor>();
+        Tensor* input_full_ = scope.FindVar(input)->GetMutable<Tensor>();
+        input_gather_ = Gather(input_full_, true_index_tensor);
+      }
+    }
+
+    for (auto& output : net_op->outputs_) {
+      scope_t.NewVar(output);
+    }
+      
+    net_op_t.Run();
+  }
+
+  { // False Scope
+    // Create new stuff
+    for (auto& input : net_op_f->inputs_) {
+      scope_f.NewVar(input);
+      if (input.type() != PARAMETER) { // gather and slice required
+        // Get Tensor and gather
+        Tensor* input_gather_ = scope_f.FindVar(input)->GetMutable<Tensor>();
+        Tensor* input_full_ = scope.FindVar(input)->GetMutable<Tensor>();
+        input_gather_ = Gather(input_full_, false_index_tensor);
+      }
+    }
+
+    for (auto& output : net_op->outputs_) {
+      scope_t.NewVar(output);
+    }
+
+    net_op_f.Run();
+  }
+
+  /* Merge Output Together by scatter update */
+  for (auto& ouput : outputs_) {
+    Tensor* output_t = scope_t->FindVar(output)->GetMutable<Tensor>();
+    Tensor* output_f = scope_f->FindVar(output)->GetMutable<Tensor>();
+    Tensor* output_tensor = scope->FindVar(output)->GetMutable<Tensor>();
+    Scatter(output_t, output_tensor, true_index_tensor);
+    Scatter(output_f, output_tensor, false_index_tensor);
+  }
+}
+
+}  // namespace operators
+}  // namespace paddle
+
+REGISTER_OP(ifelse_op,
+            paddle::operators::IfElseOp,
+            paddle::operators::RecurrentAlgorithmProtoAndCheckerMaker);

From 95b41bec3ea3ff6d95463b2564ae981b9d688fca Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Tue, 29 Aug 2017 11:44:29 -0700
Subject: [PATCH 03/72] Add LoD Tensor design doc

---
 paddle/framework/lod_tensor.md | 122 +++++++++++++++++++++++++++++++++
 1 file changed, 122 insertions(+)
 create mode 100644 paddle/framework/lod_tensor.md

diff --git a/paddle/framework/lod_tensor.md b/paddle/framework/lod_tensor.md
new file mode 100644
index 0000000000..a9a1a113d1
--- /dev/null
+++ b/paddle/framework/lod_tensor.md
@@ -0,0 +1,122 @@
+# LoD (Level-of-Detail) Tensor
+
+PaddlePaddle's RNN doesn't require that all instances have the same length.  To do so, we introduce an extension to Tensor, namely, LoD Tensor.
+
+## Challenge of Variable-length Inputs
+
+People usually represent a mini-batch by a Tensor.  For example, a mini-batch of 32 images, each of size 32x32, is a 10x32x32 Tensor.  So a transformation, T, of all images can be a matrix multiplication of the 32x32xO-dimensional tensor T and the 10x32x32 Tensor.
+
+Another example is that each mini-batch contains 32 sentences, where each word is a D-dimensional one-hot vector.  If all sentences have the same length L, we can represent this mini-batch by a 32xLxD tensor.  However, in most cases, sentences have variable lengths, and we will need an index data structure to record these variable lengths.
+
+## LoD as a Solution
+
+### Mini-Batch of variable-length sentenses
+
+Let's imagine a mini-batch of 3 variable lengths sentences, containing 3, 1, and 2 words respectively.  We can represent it by a (3+1+2)xD tensor plus some index information:
+
+```
+   3
+3   1 2
+||| | ||
+```
+
+Each `|` represents a D-dimensional word vectors.  The number 3 on top indicate 3 sentences, and numbers 3, 1, and 2 on the second level represent the number of words in each sentence.
+
+### Mini-Batch of variable-length videos
+
+This approach generalizes to the case where elements are not words, but higher dimensional objects, like images.  Suppose that a mini-batch contains videos of the same frame size 640x480.  If a mini-batch contains 3 videos of 3, 1, and 2 frames respectively.  The underlying tensor is of size (3+1+2)x640x480.  The index information illustrates as:
+
+```
+     3
+3     1  2
+口口口 口 口口
+```
+
+where each `口` represents an image.
+
+### Mini-Batch of fixed-size images
+
+Let's get back to a typical example, image classification, where each mini-batch has M fixed-sized images.  The LoD Tensor representation is
+
+```
+     M
+1 1 1 1     1
+口口口口 ... 口
+```
+
+The many 1's on the second level seem duplicated.  For this particular case of 2 levels and the second level always have length 1, we can ignore the LoD index.
+
+### Design and summarization
+
+In summary, as long as that the essential elements (words  or images) have the same size, we can represent mini-batches by a LoD Tensor:
+
+- The underlying tensor has size LxD1xD2x..., where D1xD2... is the size of the essential elements, and
+- the first dimension size L has an additon property -- a LoD index as a nested vector:
+
+  ```c++
+  typedef std::vector<std::vector> > LoD;
+  ```
+
+- The LoD index can is not necessary when there are only two levels and all elements of the second level have length 1.
+
+## Slicing of LoD Tensor
+
+Consider that we have a network with three levels of RNN: the top level one handles articles, the second level one handles sentences, and the basic level one handles words.  This network requires that mini-batches represented by 4 level LoD Tensor, for example,
+
+```
+         3
+3           1  2
+3   2  4    1  2  3
+||| || |||| |  || |||
+```
+
+To allow each level of RNN to handle its input, we define **the slicing of a LoD Tensor is defined as getting the j-th sequence on level i, or the <i,j>-slice**
+
+For example, the <2,1>-slice of above slice is
+
+```
+2
+||
+```
+
+and the <1,2>-slice of above example is
+
+```
+2
+2  3
+|| |||
+```
+
+Let's go on slicing this slice.  Its <1,1>-slice is
+
+```
+3
+|||
+```
+
+### The General Slicing Algorithm
+
+The algorithm, with over-simplified data structure, is defined as
+
+```c++
+typedef vector<vector<int> > LoD;
+
+struct LoDTensor {
+  LoD lod_;
+  float* tensor_;
+};
+
+LoDTensor Slice(const LoDTensor& lodt, int level, int sequence) {
+
+}
+```
+
+### Slicing the Top Level
+
+Please be aware that an RNN operator only slices the top level of a LoD Tensor to get the step inputs.
+
+```c++
+LoDTensor Slice(const LoDTensor& lodt, int sequence) {
+
+}
+```

From f6457e650192bfb1f5ac886585c17d2557f7f604 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Tue, 29 Aug 2017 11:44:41 -0700
Subject: [PATCH 04/72] Add LoD Tensor design doc

---
 paddle/framework/lod_tensor.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/paddle/framework/lod_tensor.md b/paddle/framework/lod_tensor.md
index a9a1a113d1..8dfe3ee823 100644
--- a/paddle/framework/lod_tensor.md
+++ b/paddle/framework/lod_tensor.md
@@ -1,4 +1,4 @@
-# LoD (Level-of-Detail) Tensor
+# Design Doc: LoD (Level-of-Detail) Tensor
 
 PaddlePaddle's RNN doesn't require that all instances have the same length.  To do so, we introduce an extension to Tensor, namely, LoD Tensor.
 

From ca9be82f6c45691b6661a4be54a05a369f579295 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Wed, 30 Aug 2017 13:05:33 +0800
Subject: [PATCH 05/72] add how to use eigen cn doc

---
 doc/howto/dev/new_op_cn.md    |   7 +-
 doc/howto/dev/use_eigen_cn.md | 140 ++++++++++++++++++++++++++++++++++
 2 files changed, 146 insertions(+), 1 deletion(-)
 create mode 100644 doc/howto/dev/use_eigen_cn.md

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index ebd2cf3ff0..55c99fa7af 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -169,6 +169,8 @@ class MulKernel : public framework::OpKernel {
 `MulKernel`需要重写`Compute`接口,该接口参数为`const framework::ExecutionContext& context`, `ExecutionContext`相比`InferShapeContext`增加了设备类型,同样可获取到输入输出和属性参数,`Compute`函数里写具体实现时。
    
 注意,不同设备(CPU、GPU)共享一个Op定义,是否则共享同一个`OpKernel`,取决于`Compute`调用的函数是否支持不同设备。`MulOp`的CPU、GPU实现共享同一个`Kernel`,`OpKernel`不共享的例子可以参考[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。 
+
+为了使得`OpKernel`的计算过程书写较为简单,CPU、GPU的代码可以复用,我们通常借助Eigen unsupported Tensor模块来实现。关于在paddle中如何使用Eigen库,请参考对应的使用[文档](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/howto/dev/use_eigen_cn.md)
    
 到此前向Op实现完成,需要在`.cc`文件中注册该op和kernel。反向Op类的定义和Kernel定义与前向Op类似,这里不再重复。但注意,反向Op没有`ProtoMaker`。
    
@@ -188,9 +190,12 @@ REGISTER_OP_CPU_KERNEL(mul_grad,
   - `REGISTER_OP_WITHOUT_GRADIENT` : 用于注册没有反向的Op。
   - `REGISTER_OP_CPU_KERNEL` :注册`ops::MulKernel`类,并特化模板参数为`paddle::platform::CPUPlace`和`float`类型,同理,注册`ops::MulKernel`类。
 
-在 `.cu`文件中注册GPU Kernel。
+在 `.cu`文件中注册GPU Kernel。请注意,如果GPU Kernel的实现是基于Eigen unsupported模块,那么在 `.cu`的最前面请加上宏定义 `#define EIGEN_USE_GPU`
    
 ```c++
+// if use Eigen unsupported module before include head files
+#define EIGEN_USE_GPU
+
 namespace ops = paddle::operators;
 REGISTER_OP_GPU_KERNEL(mul, ops::MulKernel<paddle::platform::GPUPlace, float>);
 REGISTER_OP_GPU_KERNEL(mul_grad,
diff --git a/doc/howto/dev/use_eigen_cn.md b/doc/howto/dev/use_eigen_cn.md
new file mode 100644
index 0000000000..d22ff4799c
--- /dev/null
+++ b/doc/howto/dev/use_eigen_cn.md
@@ -0,0 +1,140 @@
+## 在Paddle中如何使用Eigen
+
+神经网络本质上是一个计算图,计算需要的数据存放在`Tensor`中,而计算过程是由`Operartor`来描述的。在执行时,`Operator`调用对应`OpKernel`中的`Compute`接口,实现对`Tensor`的操作。
+
+
+### Eigen Tensor模块
+
+Eigen Tensor模块对element-wise计算提供了强大的支持,并且书写一份代码,可以同时在CPU、GPU执行。但Eigen Tensor是一个正在开发中的模块,因此可能测试不够完备,文档较少。
+
+关于Eigen Tensor模块的详细介绍请参考[文档](https://github.com/RLovelett/eigen/blob/master/unsupported/Eigen/CXX11/src/Tensor/README.md)
+
+
+### paddle::framework::Tensor
+
+Paddle Tensor定义在framework目录下,其主要接口如下:
+
+```
+class Tensor {
+ public:
+  /*! Return a pointer to mutable memory block. */
+  template <typename T>
+  inline T* data();
+  
+  /**
+   * @brief   Return a pointer to mutable memory block.
+   * @note    If not exist, then allocation.
+   */
+  template <typename T>
+  inline T* mutable_data(platform::Place place);
+  
+  /**
+   * @brief     Return a pointer to mutable memory block.
+   *
+   * @param[in] dims    The dimensions of the memory block.
+   * @param[in] place   The place of the memory block.
+   *
+   * @note      If not exist, then allocation.
+   */
+  template <typename T>
+  inline T* mutable_data(DDim dims, platform::Place place);
+  
+  /*! Resize the dimensions of the memory block. */
+  inline Tensor& Resize(const DDim& dims);
+  
+  /*! Return the dimensions of the memory block. */
+  inline const DDim& dims() const;
+
+ private:  
+  /*! holds the memory block if allocated. */
+  std::shared_ptr<Placeholder> holder_;
+  
+  /*! points to dimensions of memory block. */
+  DDim dim_;
+};
+```
+
+`Placeholder`的作用的延迟分配内存,即我们可以先定义一个Tensor,然后使用Resize接口设置Tensor的大小,最后再调用mutable_data接口分配实际的内存。
+
+```
+paddle::framework::Tensor t;
+paddle::platform::CPUPlace place;
+// set size first
+t.Resize({2, 3});
+// allocate memory on CPU later
+t.mutable_data(place);
+```
+
+下面以AddOp为例说明Tensor的使用过程:
+
+- InferShape
+
+在运行神经网络计算图时,我们先调用每个`Operator`的`InferShape`接口,根据输入Tensor的大小来设置输出Tensor的大小,`Resize`接口会被调用。
+
+```
+void InferShape(const framework::InferShapeContext &ctx) const override {
+  PADDLE_ENFORCE_EQ(ctx.Input<Tensor>("X")->dims(),
+                    ctx.Input<Tensor>("Y")->dims(),
+                    "Two input of Add Op's dimension must be same.");
+  ctx.Output<Tensor>("Out")->Resize(ctx.Input<Tensor>("X")->dims());
+}
+```
+
+
+- Run
+
+`Operator`的`Run`接口最终会调用对应`OpKernel`的`Compute`接口,在这时真正的分配内存,`mutable_data`接口会被调用。
+
+```
+void Compute(const framework::ExecutionContext& context) const override {
+  auto* input0 = context.Input<Tensor>("X");
+  auto* input1 = context.Input<Tensor>("Y");
+  auto* output = context.Output<Tensor>("Out");
+
+  output->mutable_data<T>(context.GetPlace());
+
+  auto X = EigenVector<T>::Flatten(*input0);
+  auto Y = EigenVector<T>::Flatten(*input1);
+  auto Z = EigenVector<T>::Flatten(*output);
+
+  auto place = context.GetEigenDevice<Place>();
+
+  Z.device(place) = X + Y;
+}
+```
+
+
+### paddle::framework::Tensor到EigenTensor的转换
+
+如上一小节所示,在具体的计算中,我们需要先把输入Tensor和输出Tensor转换为Eigen支持的格式。我们在[eigen.h](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/eigen.h)中提供了一些全局函数用来实现paddle::framework::Tensor到EigenTensor/EigenMatrix/EigenVector/EigenScalar的转换。
+
+以EigenTensor为例,做一个介绍
+
+```
+Tensor t;
+float* p = t.mutable_data<float>(make_ddim({1, 2, 3}), platform::CPUPlace());
+for (int i = 0; i < 1 * 2 * 3; i++) {
+  p[i] = static_cast<float>(i);
+}
+
+EigenTensor<float, 3>::Type et = EigenTensor<float, 3>::From(t);
+```
+
+From是EigenTensor模板struct提供的一个接口,可以实现从paddle::framework::Tensor到对EigenTensor的转换。由于Tensor的rank是模板参数,因此在转换时需要显示的指定。
+
+需要额外注意的是,EigenVector<T>::From方法是把paddle中的一维Tensor转为Eigen的一维Tensor,在这里用EigenVector来表示;而EigenVector<T>::Flatten方法是把paddle中的一个Tensor进行reshape操作,压扁成为Eigen的一维Tensor,类型仍然为EigenVector。
+
+更多的转换方法请参考eigen_test.cc中的[单元测试](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/eigen_test.cc)。
+
+
+
+### 实现计算
+
+当需要完成计算时,我们需要等式左边的EigenTensor调用device接口:
+
+```
+auto place = context.GetEigenDevice<Place>();
+Z.device(place) = X + Y;
+```
+
+由于Eigen Tensor模块的文档较少,我们可以参考TensorFlow的[kernels](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/kernels)模块下的相关`OpKernel`的计算代码。

From 1dfc5d87ff4b4f40272e387d598a1bec5477d127 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Wed, 30 Aug 2017 17:06:16 +0800
Subject: [PATCH 06/72] add more details

---
 doc/howto/dev/use_eigen_cn.md | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/doc/howto/dev/use_eigen_cn.md b/doc/howto/dev/use_eigen_cn.md
index d22ff4799c..49a726959a 100644
--- a/doc/howto/dev/use_eigen_cn.md
+++ b/doc/howto/dev/use_eigen_cn.md
@@ -120,7 +120,7 @@ for (int i = 0; i < 1 * 2 * 3; i++) {
 EigenTensor<float, 3>::Type et = EigenTensor<float, 3>::From(t);
 ```
 
-From是EigenTensor模板struct提供的一个接口,可以实现从paddle::framework::Tensor到对EigenTensor的转换。由于Tensor的rank是模板参数,因此在转换时需要显示的指定。
+From是EigenTensor模板提供的一个接口,可以实现从paddle::framework::Tensor到对EigenTensor的转换。由于Tensor的rank是模板参数,因此在转换时需要显示的指定。
 
 需要额外注意的是,EigenVector<T>::From方法是把paddle中的一维Tensor转为Eigen的一维Tensor,在这里用EigenVector来表示;而EigenVector<T>::Flatten方法是把paddle中的一个Tensor进行reshape操作,压扁成为Eigen的一维Tensor,类型仍然为EigenVector。
 
@@ -130,11 +130,16 @@ From是EigenTensor模板struct提供的一个接口,可以实现从paddle::fra
 
 ### 实现计算
 
-当需要完成计算时,我们需要等式左边的EigenTensor调用device接口:
+当需要完成计算时,我们需要等式左边的EigenTensor调用device接口。在这里需要注意的是,这里的EigenTensor之间的运算只是改变了原有Tensor中的数据,而不会改变原有Tensor的shape信息。
 
 ```
+auto X = EigenVector<T>::Flatten(*input0);
+auto Y = EigenVector<T>::Flatten(*input1);
+auto Z = EigenVector<T>::Flatten(*output);
 auto place = context.GetEigenDevice<Place>();
 Z.device(place) = X + Y;
 ```
 
+在这段代码中,input0/input1/output可以是任意维度的Tensor。我们调用了EigenVector的Flatten接口,把任意维度的Tensor转为了一维的EigenVector。而在计算结束之后,input0/input1/output的原有shape信息不变。如果想改变原有Tensor的shape信息,可以调用Resize接口进行改变。
+
 由于Eigen Tensor模块的文档较少,我们可以参考TensorFlow的[kernels](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/kernels)模块下的相关`OpKernel`的计算代码。

From c20a01d67d928442a0b8fb187277906ddd54ea04 Mon Sep 17 00:00:00 2001
From: dangqingqing <dangqingqing@baidu.com>
Date: Thu, 31 Aug 2017 11:26:59 +0800
Subject: [PATCH 07/72] Add cuDNN Wrapper.

---
 paddle/platform/CMakeLists.txt  |   1 +
 paddle/platform/cudnn_helper.cc |  15 +++
 paddle/platform/cudnn_helper.h  | 215 ++++++++++++++++++++++++++++++++
 paddle/platform/macros.h        |  23 ++++
 4 files changed, 254 insertions(+)
 create mode 100644 paddle/platform/cudnn_helper.cc
 create mode 100644 paddle/platform/cudnn_helper.h
 create mode 100644 paddle/platform/macros.h

diff --git a/paddle/platform/CMakeLists.txt b/paddle/platform/CMakeLists.txt
index 120eb1e4af..ef722e984c 100644
--- a/paddle/platform/CMakeLists.txt
+++ b/paddle/platform/CMakeLists.txt
@@ -22,3 +22,4 @@ ENDIF()
 cc_library(device_context SRCS device_context.cc DEPS memory buddy_allocator
     system_allocator memory_block meta_data meta_cache place eigen3 ${GPU_CTX_DEPS})
 nv_test(device_context_test SRCS device_context_test.cc DEPS device_context gpu_info)
+nv_test(cudnn_helper SRCS cudnn_helper.cc)
diff --git a/paddle/platform/cudnn_helper.cc b/paddle/platform/cudnn_helper.cc
new file mode 100644
index 0000000000..764285e2ba
--- /dev/null
+++ b/paddle/platform/cudnn_helper.cc
@@ -0,0 +1,15 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */
+
+#include "paddle/platform/cudnn_helper.h"
diff --git a/paddle/platform/cudnn_helper.h b/paddle/platform/cudnn_helper.h
new file mode 100644
index 0000000000..91047236a2
--- /dev/null
+++ b/paddle/platform/cudnn_helper.h
@@ -0,0 +1,215 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */
+
+#pragma once
+
+#include <cudnn.h>
+#include "paddle/platform/dynload/cudnn.h"
+#include "paddle/platform/enforce.h"
+#include "paddle/platform/macros.h"
+
+namespace paddle {
+namespace platform {
+
+enum class DataLayout {
+  kNHWC,
+  kNCHW,
+  kNCHW_VECT_C,
+};
+
+enum class PoolingMode {
+  kMaximum,
+  kAverage,
+};
+
+template <typename T>
+class CudnnDataType;
+
+template <>
+class CudnnDataType<float> {
+ public:
+  static const cudnnDataType_t type = CUDNN_DATA_FLOAT;
+  typedef const float ScalingParamType;
+  static ScalingParamType* kOne() {
+    static ScalingParamType v = 1.0;
+    return &v;
+  }
+  static const ScalingParamType* kZero() {
+    static ScalingParamType v = 0.0;
+    return &v;
+  }
+};
+
+template <>
+class CudnnDataType<double> {
+ public:
+  static const cudnnDataType_t type = CUDNN_DATA_DOUBLE;
+  typedef const double ScalingParamType;
+  static ScalingParamType* kOne() {
+    static ScalingParamType v = 1.0;
+    return &v;
+  }
+  static ScalingParamType* kZero() {
+    static ScalingParamType v = 0.0;
+    return &v;
+  }
+};
+
+inline cudnnTensorFormat_t GetCudnnTensorFormat(const DataLayout& order) {
+  switch (order) {
+    case DataLayout::kNHWC:
+      return CUDNN_TENSOR_NHWC;
+    case DataLayout::kNCHW:
+      return CUDNN_TENSOR_NCHW;
+    default:
+      PADDLE_THROW("Unknown cudnn equivalent for order");
+  }
+  return CUDNN_TENSOR_NCHW;
+}
+
+class ScopedTensorDescriptor {
+ public:
+  ScopedTensorDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnCreateTensorDescriptor(&desc_));
+  }
+  ~ScopedTensorDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnDestroyTensorDescriptor(desc_));
+  }
+
+  inline cudnnTensorDescriptor_t descriptor(const cudnnTensorFormat_t format,
+                                            const cudnnDataType_t type,
+                                            const std::vector<int>& dims) {
+    // the format is not used now, but it maybe useful feature
+    std::vector<int> strides(dims.size());
+    strides[dims.size() - 1] = 1;
+    for (int i = dims.size() - 1; i >= 0; i++) {
+      strides[i] = dims[i + 1] * strides[i];
+    }
+    PADDLE_ENFORCE(cudnnSetTensorNdDescriptor(desc_, type, dims.size(),
+                                              dims.data(), strides.data()));
+    return desc_;
+  }
+
+  template <typename T>
+  inline cudnnTensorDescriptor_t descriptor(const DataLayout& order,
+                                            const std::vector<int>& dims) {
+    return descriptor(GetCudnnTensorFormat(order), CudnnDataType<T>::type,
+                      dims);
+  }
+
+ private:
+  cudnnTensorDescriptor_t desc_;
+  DISABLE_COPY_AND_ASSIGN(ScopedTensorDescriptor);
+};
+
+class ScopedFilterDescriptor {
+ public:
+  ScopedFilterDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnCreateFilterDescriptor(&desc_));
+  }
+  ~ScopedFilterDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnDestroyFilterDescriptor(desc_));
+  }
+
+  inline cudnnFilterDescriptor_t descriptor(const cudnnTensorFormat_t format,
+                                            const cudnnDataType_t type,
+                                            const std::vector<int>& kernel) {
+    // filter layout: output input spatial_dim_y spatial_dim_x
+    PADDLE_ENFORCE(cudnnSetFilterNdDescriptor(desc_, type, format,
+                                              kernel.size(), kernel.data()));
+    return desc_;
+  }
+
+  template <typename T>
+  inline cudnnFilterDescriptor_t descriptor(const DataLayout& order,
+                                            const std::vector<int>& kernel) {
+    return descriptor(GetCudnnTensorFormat(order), CudnnDataType<T>::type,
+                      kernel);
+  }
+
+ private:
+  cudnnFilterDescriptor_t desc_;
+  DISABLE_COPY_AND_ASSIGN(ScopedFilterDescriptor);
+};
+
+class ScopedConvolutionDescriptor {
+ public:
+  ScopedConvolutionDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnCreateConvolutionDescriptor(&desc_));
+  }
+  ~ScopedConvolutionDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnDestroyConvolutionDescriptor(desc_));
+  }
+
+  inline cudnnConvolutionDescriptor_t descriptor(
+      cudnnDataType_t type, const std::vector<int>& pads,
+      const std::vector<int>& strides, const std::vector<int>& dilations) {
+    PADDLE_ENFORCE_EQ(pads.size(), strides.size());
+    PADDLE_ENFORCE_EQ(pads.size(), dilations.size());
+    PADDLE_ENFORCE(cudnnSetConvolutionNdDescriptor(
+        desc_, pads.size(), pads.data(), strides.data(), dilations.data(),
+        CUDNN_CROSS_CORRELATION, type));
+  }
+
+  template <typename T>
+  inline cudnnConvolutionDescriptor_t descriptor(
+      const std::vector<int>& pads, const std::vector<int>& strides,
+      const std::vector<int>& dilations) {
+    return descriptor(CudnnDataType<T>::type, pads, strides, dilations);
+  }
+
+ private:
+  cudnnConvolutionDescriptor_t desc_;
+  DISABLE_COPY_AND_ASSIGN(ScopedConvolutionDescriptor);
+};
+
+class ScopedPoolingDescriptor {
+ public:
+  ScopedPoolingDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnCreatePoolingDescriptor(&desc_));
+  }
+  ~ScopedPoolingDescriptor() {
+    PADDLE_ENFORCE(dynload::cudnnDestroyPoolingDescriptor(desc_));
+  }
+
+  inline cudnnPoolingDescriptor_t descriptor(const PoolingMode& mode,
+                                             cudnnDataType_t type,
+                                             const std::vector<int>& kernel,
+                                             const std::vector<int>& pads,
+                                             const std::vector<int>& strides) {
+    PADDLE_ENFORCE_EQ(kernel.size(), pads.size());
+    PADDLE_ENFORCE_EQ(kernel.size(), strides.size());
+    PADDLE_ENFORCE(cudnnSetPoolingNdDescriptor(
+        desc_, (mode == PoolingMode::kMaximum
+                    ? CUDNN_POOLING_MAX
+                    : CUDNN_POOLING_AVERAGE_COUNT_EXCLUDE_PADDING),
+        CUDNN_PROPAGATE_NAN,  // Always propagate nans.
+        kernel.size(), kernel.data(), pads.data(), strides.data()));
+  }
+
+  template <typename T>
+  inline cudnnPoolingDescriptor_t descriptor(const PoolingMode& mode,
+                                             const std::vector<int>& kernel,
+                                             const std::vector<int>& pads,
+                                             const std::vector<int>& strides) {
+    return descriptor(mode, CudnnDataType<T>::type, kernel, pads, strides);
+  }
+
+ private:
+  cudnnPoolingDescriptor_t desc_;
+  DISABLE_COPY_AND_ASSIGN(ScopedPoolingDescriptor);
+};
+
+}  // namespace platform
+}  // namespace paddle
diff --git a/paddle/platform/macros.h b/paddle/platform/macros.h
new file mode 100644
index 0000000000..4a04a38c0c
--- /dev/null
+++ b/paddle/platform/macros.h
@@ -0,0 +1,23 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */
+
+#pragma once
+
+// Disable the copy and assignment operator for a class.
+#ifndef DISABLE_COPY_AND_ASSIGN
+#define DISABLE_COPY_AND_ASSIGN(classname) \
+ private:                                  \
+  classname(const classname&) = delete;    \
+  classname& operator=(const classname&) = delete
+#endif

From f03811b06fc099486824cc8baaee3bacbc687523 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Thu, 31 Aug 2017 16:33:56 +0800
Subject: [PATCH 08/72] init refine LODTensor

---
 paddle/framework/lod_tensor.cc      |  41 +++++++----
 paddle/framework/lod_tensor.h       | 104 ++++++++--------------------
 paddle/framework/lod_tensor_test.cc |  84 ++++++++++++----------
 3 files changed, 102 insertions(+), 127 deletions(-)

diff --git a/paddle/framework/lod_tensor.cc b/paddle/framework/lod_tensor.cc
index 2b17890774..71eac4a10b 100644
--- a/paddle/framework/lod_tensor.cc
+++ b/paddle/framework/lod_tensor.cc
@@ -19,25 +19,24 @@
 namespace paddle {
 namespace framework {
 
-LODTensor::LOD LODTensor::LOD::SliceLevels(size_t level_begin,
-                                           size_t level_end) const {
+LOD SliceLevels(const LOD& in, size_t level_begin, size_t level_end) {
   LOD new_lod;
   new_lod.reserve(level_end - level_begin);
   for (size_t i = level_begin; i < level_end; i++) {
-    new_lod.emplace_back(at(i));
+    new_lod.emplace_back(in.at(i));
   }
   return new_lod;
 }
 
-LODTensor::LOD LODTensor::LOD::SliceInLevel(size_t level, size_t elem_begin,
-                                            size_t elem_end) const {
+LOD SliceInLevel(const LOD& in, size_t level, size_t elem_begin,
+                 size_t elem_end) {
   // slice the lod.
   LOD new_lod;
-  new_lod.reserve(size() - level);
-  auto start = this->at(level)[elem_begin];
-  auto end = this->at(level)[elem_end];
+  new_lod.reserve(in.size() - level);
+  auto start = in.at(level)[elem_begin];
+  auto end = in.at(level)[elem_end];
 
-  for (auto it = this->begin() + level; it != this->end(); it++) {
+  for (auto it = in.begin() + level; it != in.end(); it++) {
     auto it_begin = std::find(it->begin(), it->end(), start);
     auto it_end = std::find(it_begin, it->end(), end);
     PADDLE_ENFORCE(it_begin != it->end(), "error in parsing lod info");
@@ -49,11 +48,11 @@ LODTensor::LOD LODTensor::LOD::SliceInLevel(size_t level, size_t elem_begin,
                    [start](int v) { return v - start; });
     PADDLE_ENFORCE_EQ(new_lod.back().front(), 0, "error in slice LOD");
   }
-  PADDLE_ENFORCE_LE(new_lod.size(), this->size());
+  PADDLE_ENFORCE_LE(new_lod.size(), in.size());
   return new_lod;
 }
 
-bool operator==(const LODTensor::LOD& a, const LODTensor::LOD& b) {
+bool operator==(const LOD& a, const LOD& b) {
   if (a.size() != b.size()) {
     return false;
   }
@@ -70,9 +69,27 @@ bool operator==(const LODTensor::LOD& a, const LODTensor::LOD& b) {
       }
     }
   }
-
   return true;
 }
 
+void LODTensor::SliceLevels(size_t level_begin, size_t level_end) {
+  auto new_lod = framework::SliceLevels(lod_, level_begin, level_end);
+  lod_ = new_lod;
+}
+
+void LODTensor::SliceInLevel(size_t level, size_t elem_begin, size_t elem_end) {
+  PADDLE_ENFORCE(level < NumLevels(), "level [%d] out of range [%d]", level,
+                 NumLevels());
+  PADDLE_ENFORCE(elem_begin < NumElements(level),
+                 "element begin [%d] out of range [%d]", elem_begin,
+                 NumElements(level));
+  PADDLE_ENFORCE(elem_end < NumElements(level) + 1,
+                 "element end [%d] out of range [%d]", elem_end,
+                 NumElements(level));
+
+  auto new_lod = framework::SliceInLevel(lod_, level, elem_begin, elem_end);
+  lod_ = new_lod;
+}
+
 }  // namespace framework
 }  // namespace paddle
diff --git a/paddle/framework/lod_tensor.h b/paddle/framework/lod_tensor.h
index 9e27aec38d..7a9aebf50a 100644
--- a/paddle/framework/lod_tensor.h
+++ b/paddle/framework/lod_tensor.h
@@ -15,7 +15,7 @@
 #pragma once
 
 #include <memory>
-#if !defined(PADDLE_ONLY_CPU)
+#ifndef PADDLE_ONLY_CPU
 #include <thrust/device_vector.h>
 #include <thrust/host_vector.h>
 #endif
@@ -27,33 +27,31 @@
 namespace paddle {
 namespace framework {
 
+#ifdef PADDLE_ONLY_CPU
+template <typename T>
+using Vector = std::vector<T>;
+#else
+template <typename T>
+using Vector = thrust::host_vector<T>;
+#endif
+
+using LOD = std::vector<Vector<size_t>>;
+
+LOD SliceLevels(const LOD& in, size_t level_begin, size_t level_end);
+
+LOD SliceInLevel(const LOD& in, size_t level, size_t elem_begin,
+                 size_t elem_end);
+
+bool operator==(const LOD& a, const LOD& b);
+
 /*
  * LODTensor (Level of details Tensor)
  * see https://en.wikipedia.org/wiki/Level_of_details for reference.
  */
-class LODTensor : public Tensor {
+struct LODTensor {
  public:
-// Level save offsets of each unit.
-#ifdef PADDLE_ONLY_CPU
-  template <typename T>
-  using Vector = std::vector<T>;
-#else
-  template <typename T>
-  using Vector = thrust::host_vector<T>;
-#endif
-  // LoD stores offsets of each level of units, the largest units level first,
-  // then the smaller units level. Each Level stores the offsets of units in
-  // Tesor.
-  class LOD : public std::vector<Vector<size_t>> {
-   public:
-    LOD SliceLevels(size_t level_begin, size_t level_end) const;
-    LOD SliceInLevel(size_t level, size_t elem_begin, size_t elem_end) const;
-  };
-
   LODTensor() {}
-  explicit LODTensor(const LOD &lod) : lod_(lod) {}
-
-  virtual Tensor *Clone() const { return new LODTensor(lod_); }
+  LODTensor(const LOD& lod, Tensor* t) : lod_(lod), tensor_(t) {}
 
   /*
    * Get a element from LOD.
@@ -79,71 +77,23 @@ class LODTensor : public Tensor {
     PADDLE_ENFORCE(level < NumLevels(), "level [%d] out of range [%d]", level,
                    NumLevels());
     // the last offset is the end of last element
-    return lod_[level].size() - 1;
+    return (lod_)[level].size() - 1;
   }
 
   /*
-   * Slice of levels[level_begin:level_end], with tensor shared.
+   * Slice of levels[level_begin:level_end]
    */
-  template <typename T>
-  LODTensor SliceLevels(size_t level_begin, size_t level_end) const;
+  void SliceLevels(size_t level_begin, size_t level_end);
 
   /*
-   * Slice of elements of a level, [elem_begin: elem_end], with tensor shared.
+   * Slice of elements of a level, [elem_begin: elem_end]
    * @note: low performance in slice lod_.
    */
-  template <typename T>
-  LODTensor SliceInLevel(size_t level, size_t elem_begin,
-                         size_t elem_end) const;
-
-  /*
-   * Copy other's lod_'s content, free to mutate.
-   */
-  void CopyLOD(const LODTensor &other) { lod_ = other.lod_; }
-  /*
-   * Determine whether LODTensor has a valid LOD info.
-   */
-  const LOD &lod() const { return lod_; }
-  LOD *mutable_lod() { return &lod_; }
-
-  virtual ~LODTensor() {}
+  void SliceInLevel(size_t level, size_t elem_begin, size_t elem_end);
 
- private:
+ public:
   LOD lod_;
+  Tensor* tensor_;  // not owned
 };
-
-bool operator==(const LODTensor::LOD &a, const LODTensor::LOD &b);
-
-template <typename T>
-LODTensor LODTensor::SliceLevels(size_t level_begin, size_t level_end) const {
-  auto new_lod = lod_.SliceLevels(level_begin, level_end);
-  // slice levels just need to update LOD info, each level will contains the
-  // whole tensor_, so no need to modify tensor_.
-  LODTensor new_tensor(new_lod);
-  new_tensor.ShareDataWith<T>(*this);
-  return new_tensor;
-}
-
-template <typename T>
-LODTensor LODTensor::SliceInLevel(size_t level, size_t elem_begin,
-                                  size_t elem_end) const {
-  PADDLE_ENFORCE(level < NumLevels(), "level [%d] out of range [%d]", level,
-                 NumLevels());
-  PADDLE_ENFORCE(elem_begin < NumElements(level),
-                 "element begin [%d] out of range [%d]", elem_begin,
-                 NumElements(level));
-  PADDLE_ENFORCE(elem_end < NumElements(level) + 1,
-                 "element end [%d] out of range [%d]", elem_end,
-                 NumElements(level));
-
-  auto new_lod = lod_.SliceInLevel(level, elem_begin, elem_end);
-
-  // slice elements just need to update LOD info, because offsets are not
-  // changed, so the original tensor_ can be reused.
-  LODTensor new_tensor(new_lod);
-  new_tensor.ShareDataWith<T>(*this);
-  return new_tensor;
-}
-
 }  // namespace framework
 }  // namespace paddle
diff --git a/paddle/framework/lod_tensor_test.cc b/paddle/framework/lod_tensor_test.cc
index 2881136ced..b75d86b5b4 100644
--- a/paddle/framework/lod_tensor_test.cc
+++ b/paddle/framework/lod_tensor_test.cc
@@ -21,16 +21,34 @@
 namespace paddle {
 namespace framework {
 
+// TEST(LODTensor, test) {
+//   LOD lod;
+//   lod.push_back(std::vector<size_t>{0, 10, 20});
+//   lod.push_back(std::vector<size_t>{0, 5, 10, 15, 20});
+//   lod.push_back(std::vector<size_t>{0, 2, 5, 7, 10, 12, 15, 17, 20});
+
+//   ASSERT_EQ(lod.size(), 3UL);
+
+//   Tensor tensor;
+//   tensor.Resize({20 /*batch size*/, 128 /*dim*/});
+//   // malloc memory
+//   platform::CPUPlace place;
+//   tensor.mutable_data<float>(place);
+
+//   LODTensor lod_tensor(lod, &tensor);
+
+//   ASSERT_EQ(lod_tensor.NumLevels(), 3UL);
+// }
+
 class LODTensorTester : public ::testing::Test {
  public:
   virtual void SetUp() override {
-    lod_tensor.reset(new LODTensor);
     // tensor's batch_size: 30
     // 3 levels
     // 0 10 20
     // 0 5 10 15 20
     // 0 2 5 7 10 12 15 20
-    LODTensor::LOD lod;
+    LOD lod;
     lod.push_back(std::vector<size_t>{0, 10, 20});
     lod.push_back(std::vector<size_t>{0, 5, 10, 15, 20});
     lod.push_back(std::vector<size_t>{0, 2, 5, 7, 10, 12, 15, 17, 20});
@@ -41,75 +59,65 @@ class LODTensorTester : public ::testing::Test {
     // malloc memory
     tensor.mutable_data<float>(place);
 
-    lod_tensor.reset(new LODTensor(lod));
-    lod_tensor->Resize({20 /*batch size*/, 128 /*dim*/});
-
-    lod_tensor->ShareDataWith<float>(tensor);
-    // lod_tensor->ShareDataWith<Tensor>(tensor);
+    lod_tensor.lod_ = lod;
+    lod_tensor.tensor_ = &tensor;
   }
 
  protected:
-  std::unique_ptr<LODTensor> lod_tensor;
   platform::CPUPlace place;
   Tensor tensor;
+  LODTensor lod_tensor;
 };
 
-TEST_F(LODTensorTester, NumLevels) { ASSERT_EQ(lod_tensor->NumLevels(), 3UL); }
+TEST_F(LODTensorTester, NumLevels) { ASSERT_EQ(lod_tensor.NumLevels(), 3UL); }
 
 TEST_F(LODTensorTester, NumElements) {
-  ASSERT_EQ(lod_tensor->NumElements(0), 2UL);
-  ASSERT_EQ(lod_tensor->NumElements(1), 4UL);
-  ASSERT_EQ(lod_tensor->NumElements(2), 8UL);
+  ASSERT_EQ(lod_tensor.NumElements(0), 2UL);
+  ASSERT_EQ(lod_tensor.NumElements(1), 4UL);
+  ASSERT_EQ(lod_tensor.NumElements(2), 8UL);
 }
 
 TEST_F(LODTensorTester, SliceLevels) {
   // slice 1 level
   for (size_t level = 0; level < 3UL; ++level) {
-    auto new_lod_tensor = lod_tensor->SliceLevels<float>(level, level + 1);
+    LODTensor new_lod_tensor = lod_tensor;
+    new_lod_tensor.SliceLevels(level, level + 1);
     ASSERT_EQ(new_lod_tensor.NumLevels(), 1UL);
-    ASSERT_EQ(new_lod_tensor.NumElements(0UL), lod_tensor->NumElements(level));
-    // ASSERT_EQ(new_lod_tensor, *lod_tensor);
+    ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor.NumElements(level));
+    ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
+              lod_tensor.tensor_->data<float>());
   }
   // slice 2 level
   for (size_t level = 0; level < 2UL; ++level) {
-    auto new_lod_tensor = lod_tensor->SliceLevels<float>(level, level + 2);
+    LODTensor new_lod_tensor = lod_tensor;
+    new_lod_tensor.SliceLevels(level, level + 2);
     ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
-    ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor->NumElements(level));
-    ASSERT_EQ(new_lod_tensor.NumElements(1),
-              lod_tensor->NumElements(level + 1));
-    ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor->data<float>());
+    ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor.NumElements(level));
+    ASSERT_EQ(new_lod_tensor.NumElements(1), lod_tensor.NumElements(level + 1));
+    ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
+              lod_tensor.tensor_->data<float>());
   }
 }
 
 TEST_F(LODTensorTester, SliceInLevel) {
   size_t level = 0;
-  auto new_lod_tensor = lod_tensor->SliceInLevel<float>(level, 0, 2);
+  LODTensor new_lod_tensor = lod_tensor;
+  new_lod_tensor.SliceInLevel(level, 0, 2);
   EXPECT_EQ(new_lod_tensor.NumLevels(), 3UL);
   EXPECT_EQ(new_lod_tensor.NumElements(0), 2UL);
   EXPECT_EQ(new_lod_tensor.NumElements(1), 4UL);
   EXPECT_EQ(new_lod_tensor.NumElements(2), 8UL);
-  ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor->data<float>());
+  ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
+            lod_tensor.tensor_->data<float>());
 
   level = 1;
-  new_lod_tensor = lod_tensor->SliceInLevel<float>(level, 0, 2);
+  new_lod_tensor = lod_tensor;
+  new_lod_tensor.SliceInLevel(level, 0, 2);
   ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
   ASSERT_EQ(new_lod_tensor.NumElements(0), 2UL);
   ASSERT_EQ(new_lod_tensor.NumElements(1), 4UL);
-  ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor->data<float>());
-}
-
-TEST_F(LODTensorTester, ShareLOD) {
-  LODTensor new_lod_tensor;
-  new_lod_tensor.CopyLOD(*lod_tensor);
-  ASSERT_EQ(new_lod_tensor.lod(), lod_tensor->lod());
-}
-
-TEST_F(LODTensorTester, CopyLOD) {
-  LODTensor new_lod_tensor;
-  new_lod_tensor.CopyLOD(*lod_tensor);
-  bool equals = std::equal(lod_tensor->lod().begin(), lod_tensor->lod().end(),
-                           new_lod_tensor.lod().begin());
-  ASSERT_TRUE(equals);
+  ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
+            lod_tensor.tensor_->data<float>());
 }
 
 }  // namespace framework

From 039784426641162686cfaae556a5f325dcf6fda4 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Thu, 31 Aug 2017 16:34:50 +0800
Subject: [PATCH 09/72] remove unused codes

---
 paddle/framework/lod_tensor_test.cc | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/paddle/framework/lod_tensor_test.cc b/paddle/framework/lod_tensor_test.cc
index b75d86b5b4..30c8925ad0 100644
--- a/paddle/framework/lod_tensor_test.cc
+++ b/paddle/framework/lod_tensor_test.cc
@@ -21,25 +21,6 @@
 namespace paddle {
 namespace framework {
 
-// TEST(LODTensor, test) {
-//   LOD lod;
-//   lod.push_back(std::vector<size_t>{0, 10, 20});
-//   lod.push_back(std::vector<size_t>{0, 5, 10, 15, 20});
-//   lod.push_back(std::vector<size_t>{0, 2, 5, 7, 10, 12, 15, 17, 20});
-
-//   ASSERT_EQ(lod.size(), 3UL);
-
-//   Tensor tensor;
-//   tensor.Resize({20 /*batch size*/, 128 /*dim*/});
-//   // malloc memory
-//   platform::CPUPlace place;
-//   tensor.mutable_data<float>(place);
-
-//   LODTensor lod_tensor(lod, &tensor);
-
-//   ASSERT_EQ(lod_tensor.NumLevels(), 3UL);
-// }
-
 class LODTensorTester : public ::testing::Test {
  public:
   virtual void SetUp() override {

From 835572afe70e3c0a0f11ff2f40a53b899b7adda6 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Thu, 31 Aug 2017 16:51:02 +0800
Subject: [PATCH 10/72] make LODTensor class instead struct

---
 paddle/framework/lod_tensor.h       | 12 ++++++++++--
 paddle/framework/lod_tensor_test.cc | 20 ++++++++++----------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/paddle/framework/lod_tensor.h b/paddle/framework/lod_tensor.h
index 7a9aebf50a..9e6b6b4aca 100644
--- a/paddle/framework/lod_tensor.h
+++ b/paddle/framework/lod_tensor.h
@@ -48,11 +48,19 @@ bool operator==(const LOD& a, const LOD& b);
  * LODTensor (Level of details Tensor)
  * see https://en.wikipedia.org/wiki/Level_of_details for reference.
  */
-struct LODTensor {
+class LODTensor {
  public:
   LODTensor() {}
   LODTensor(const LOD& lod, Tensor* t) : lod_(lod), tensor_(t) {}
 
+  void set_lod(const LOD& lod) { lod_ = lod; }
+
+  void set_tensor(Tensor* tensor) { tensor_ = tensor; }
+
+  Tensor& tensor() { return *tensor_; }
+
+  LOD lod() { return lod_; }
+
   /*
    * Get a element from LOD.
    */
@@ -91,7 +99,7 @@ struct LODTensor {
    */
   void SliceInLevel(size_t level, size_t elem_begin, size_t elem_end);
 
- public:
+ private:
   LOD lod_;
   Tensor* tensor_;  // not owned
 };
diff --git a/paddle/framework/lod_tensor_test.cc b/paddle/framework/lod_tensor_test.cc
index 30c8925ad0..9a351605ed 100644
--- a/paddle/framework/lod_tensor_test.cc
+++ b/paddle/framework/lod_tensor_test.cc
@@ -40,8 +40,8 @@ class LODTensorTester : public ::testing::Test {
     // malloc memory
     tensor.mutable_data<float>(place);
 
-    lod_tensor.lod_ = lod;
-    lod_tensor.tensor_ = &tensor;
+    lod_tensor.set_lod(lod);
+    lod_tensor.set_tensor(&tensor);
   }
 
  protected:
@@ -65,8 +65,8 @@ TEST_F(LODTensorTester, SliceLevels) {
     new_lod_tensor.SliceLevels(level, level + 1);
     ASSERT_EQ(new_lod_tensor.NumLevels(), 1UL);
     ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor.NumElements(level));
-    ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
-              lod_tensor.tensor_->data<float>());
+    ASSERT_EQ(new_lod_tensor.tensor().data<float>(),
+              lod_tensor.tensor().data<float>());
   }
   // slice 2 level
   for (size_t level = 0; level < 2UL; ++level) {
@@ -75,8 +75,8 @@ TEST_F(LODTensorTester, SliceLevels) {
     ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
     ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor.NumElements(level));
     ASSERT_EQ(new_lod_tensor.NumElements(1), lod_tensor.NumElements(level + 1));
-    ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
-              lod_tensor.tensor_->data<float>());
+    ASSERT_EQ(new_lod_tensor.tensor().data<float>(),
+              lod_tensor.tensor().data<float>());
   }
 }
 
@@ -88,8 +88,8 @@ TEST_F(LODTensorTester, SliceInLevel) {
   EXPECT_EQ(new_lod_tensor.NumElements(0), 2UL);
   EXPECT_EQ(new_lod_tensor.NumElements(1), 4UL);
   EXPECT_EQ(new_lod_tensor.NumElements(2), 8UL);
-  ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
-            lod_tensor.tensor_->data<float>());
+  ASSERT_EQ(new_lod_tensor.tensor().data<float>(),
+            lod_tensor.tensor().data<float>());
 
   level = 1;
   new_lod_tensor = lod_tensor;
@@ -97,8 +97,8 @@ TEST_F(LODTensorTester, SliceInLevel) {
   ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
   ASSERT_EQ(new_lod_tensor.NumElements(0), 2UL);
   ASSERT_EQ(new_lod_tensor.NumElements(1), 4UL);
-  ASSERT_EQ(new_lod_tensor.tensor_->data<float>(),
-            lod_tensor.tensor_->data<float>());
+  ASSERT_EQ(new_lod_tensor.tensor().data<float>(),
+            lod_tensor.tensor().data<float>());
 }
 
 }  // namespace framework

From 207132226c39c864a0808428cb8593bafafc4407 Mon Sep 17 00:00:00 2001
From: dangqingqing <dangqingqing@baidu.com>
Date: Thu, 31 Aug 2017 20:49:33 +0800
Subject: [PATCH 11/72] Add unit testing for cuDNN wrapper.

---
 paddle/platform/CMakeLists.txt         |   4 +-
 paddle/platform/cudnn_helper.h         |  41 +++++----
 paddle/platform/cudnn_helper_test.cc   | 121 +++++++++++++++++++++++++
 paddle/platform/dynload/CMakeLists.txt |   2 +-
 paddle/platform/dynload/cudnn.h        |   8 ++
 5 files changed, 157 insertions(+), 19 deletions(-)
 create mode 100644 paddle/platform/cudnn_helper_test.cc

diff --git a/paddle/platform/CMakeLists.txt b/paddle/platform/CMakeLists.txt
index ef722e984c..9a3ad8eb64 100644
--- a/paddle/platform/CMakeLists.txt
+++ b/paddle/platform/CMakeLists.txt
@@ -22,4 +22,6 @@ ENDIF()
 cc_library(device_context SRCS device_context.cc DEPS memory buddy_allocator
     system_allocator memory_block meta_data meta_cache place eigen3 ${GPU_CTX_DEPS})
 nv_test(device_context_test SRCS device_context_test.cc DEPS device_context gpu_info)
-nv_test(cudnn_helper SRCS cudnn_helper.cc)
+
+nv_library(cudnn_helper SRCS cudnn_helper.cc DEPS dynload_cuda)
+nv_test(cudnn_helper_test SRCS cudnn_helper_test.cc DEPS dynload_cuda)
diff --git a/paddle/platform/cudnn_helper.h b/paddle/platform/cudnn_helper.h
index 91047236a2..6a43f49cfc 100644
--- a/paddle/platform/cudnn_helper.h
+++ b/paddle/platform/cudnn_helper.h
@@ -14,7 +14,9 @@ limitations under the License. */
 
 #pragma once
 
+#ifndef PADDLE_ONLY_CPU
 #include <cudnn.h>
+#include "glog/logging.h"
 #include "paddle/platform/dynload/cudnn.h"
 #include "paddle/platform/enforce.h"
 #include "paddle/platform/macros.h"
@@ -93,11 +95,11 @@ class ScopedTensorDescriptor {
     // the format is not used now, but it maybe useful feature
     std::vector<int> strides(dims.size());
     strides[dims.size() - 1] = 1;
-    for (int i = dims.size() - 1; i >= 0; i++) {
-      strides[i] = dims[i + 1] * strides[i];
+    for (int i = dims.size() - 2; i >= 0; i--) {
+      strides[i] = dims[i + 1] * strides[i + 1];
     }
-    PADDLE_ENFORCE(cudnnSetTensorNdDescriptor(desc_, type, dims.size(),
-                                              dims.data(), strides.data()));
+    PADDLE_ENFORCE(dynload::cudnnSetTensorNdDescriptor(
+        desc_, type, dims.size(), dims.data(), strides.data()));
     return desc_;
   }
 
@@ -126,8 +128,8 @@ class ScopedFilterDescriptor {
                                             const cudnnDataType_t type,
                                             const std::vector<int>& kernel) {
     // filter layout: output input spatial_dim_y spatial_dim_x
-    PADDLE_ENFORCE(cudnnSetFilterNdDescriptor(desc_, type, format,
-                                              kernel.size(), kernel.data()));
+    PADDLE_ENFORCE(dynload::cudnnSetFilterNdDescriptor(
+        desc_, type, format, kernel.size(), kernel.data()));
     return desc_;
   }
 
@@ -157,9 +159,21 @@ class ScopedConvolutionDescriptor {
       const std::vector<int>& strides, const std::vector<int>& dilations) {
     PADDLE_ENFORCE_EQ(pads.size(), strides.size());
     PADDLE_ENFORCE_EQ(pads.size(), dilations.size());
-    PADDLE_ENFORCE(cudnnSetConvolutionNdDescriptor(
+
+#if CUDNN_VERSION < 6000
+    // cudnn v5 does not support dilation conv, the argument is called upscale
+    // instead of dilations and it is must be one.
+    for (size_t i = 0; i < dilations.size(); ++i) {
+      PADDLE_ENFORCE_EQ(
+          dilations[i], 1,
+          "Dilations conv is not supported in this cuDNN version");
+    }
+#endif
+
+    PADDLE_ENFORCE(dynload::cudnnSetConvolutionNdDescriptor(
         desc_, pads.size(), pads.data(), strides.data(), dilations.data(),
         CUDNN_CROSS_CORRELATION, type));
+    return desc_;
   }
 
   template <typename T>
@@ -184,26 +198,18 @@ class ScopedPoolingDescriptor {
   }
 
   inline cudnnPoolingDescriptor_t descriptor(const PoolingMode& mode,
-                                             cudnnDataType_t type,
                                              const std::vector<int>& kernel,
                                              const std::vector<int>& pads,
                                              const std::vector<int>& strides) {
     PADDLE_ENFORCE_EQ(kernel.size(), pads.size());
     PADDLE_ENFORCE_EQ(kernel.size(), strides.size());
-    PADDLE_ENFORCE(cudnnSetPoolingNdDescriptor(
+    PADDLE_ENFORCE(dynload::cudnnSetPoolingNdDescriptor(
         desc_, (mode == PoolingMode::kMaximum
                     ? CUDNN_POOLING_MAX
                     : CUDNN_POOLING_AVERAGE_COUNT_EXCLUDE_PADDING),
         CUDNN_PROPAGATE_NAN,  // Always propagate nans.
         kernel.size(), kernel.data(), pads.data(), strides.data()));
-  }
-
-  template <typename T>
-  inline cudnnPoolingDescriptor_t descriptor(const PoolingMode& mode,
-                                             const std::vector<int>& kernel,
-                                             const std::vector<int>& pads,
-                                             const std::vector<int>& strides) {
-    return descriptor(mode, CudnnDataType<T>::type, kernel, pads, strides);
+    return desc_;
   }
 
  private:
@@ -213,3 +219,4 @@ class ScopedPoolingDescriptor {
 
 }  // namespace platform
 }  // namespace paddle
+#endif
diff --git a/paddle/platform/cudnn_helper_test.cc b/paddle/platform/cudnn_helper_test.cc
new file mode 100644
index 0000000000..729f2f8a10
--- /dev/null
+++ b/paddle/platform/cudnn_helper_test.cc
@@ -0,0 +1,121 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */
+
+#include "paddle/platform/cudnn_helper.h"
+#include "glog/logging.h"
+#include "gtest/gtest.h"
+
+TEST(CudnnHelper, ScopedTensorDescriptor) {
+  using paddle::platform::ScopedTensorDescriptor;
+  using paddle::platform::DataLayout;
+
+  ScopedTensorDescriptor tensor_desc;
+  std::vector<int> shape = {2, 4, 6, 6};
+  auto desc = tensor_desc.descriptor<float>(DataLayout::kNCHW, shape);
+
+  cudnnDataType_t type;
+  int nd;
+  std::vector<int> dims(4);
+  std::vector<int> strides(4);
+  paddle::platform::dynload::cudnnGetTensorNdDescriptor(
+      desc, 4, &type, &nd, dims.data(), strides.data());
+
+  EXPECT_EQ(nd, 4);
+  for (size_t i = 0; i < dims.size(); ++i) {
+    EXPECT_EQ(dims[i], shape[i]);
+  }
+  EXPECT_EQ(strides[3], 1);
+  EXPECT_EQ(strides[2], 6);
+  EXPECT_EQ(strides[1], 36);
+  EXPECT_EQ(strides[0], 144);
+}
+
+TEST(CudnnHelper, ScopedFilterDescriptor) {
+  using paddle::platform::ScopedFilterDescriptor;
+  using paddle::platform::DataLayout;
+
+  ScopedFilterDescriptor filter_desc;
+  std::vector<int> shape = {2, 3, 3};
+  auto desc = filter_desc.descriptor<float>(DataLayout::kNCHW, shape);
+
+  cudnnDataType_t type;
+  int nd;
+  cudnnTensorFormat_t format;
+  std::vector<int> kernel(3);
+  paddle::platform::dynload::cudnnGetFilterNdDescriptor(desc, 3, &type, &format,
+                                                        &nd, kernel.data());
+
+  EXPECT_EQ(GetCudnnTensorFormat(DataLayout::kNCHW), format);
+  EXPECT_EQ(nd, 3);
+  for (size_t i = 0; i < shape.size(); ++i) {
+    EXPECT_EQ(kernel[i], shape[i]);
+  }
+}
+
+TEST(CudnnHelper, ScopedConvolutionDescriptor) {
+  using paddle::platform::ScopedConvolutionDescriptor;
+
+  ScopedConvolutionDescriptor conv_desc;
+  std::vector<int> src_pads = {2, 2, 2};
+  std::vector<int> src_strides = {1, 1, 1};
+  std::vector<int> src_dilations = {1, 1, 1};
+  auto desc = conv_desc.descriptor<float>(src_pads, src_strides, src_dilations);
+
+  cudnnDataType_t type;
+  cudnnConvolutionMode_t mode;
+  int nd;
+  std::vector<int> pads(3);
+  std::vector<int> strides(3);
+  std::vector<int> dilations(3);
+  paddle::platform::dynload::cudnnGetConvolutionNdDescriptor(
+      desc, 3, &nd, pads.data(), strides.data(), dilations.data(), &mode,
+      &type);
+
+  EXPECT_EQ(nd, 3);
+  for (size_t i = 0; i < src_pads.size(); ++i) {
+    EXPECT_EQ(pads[i], src_pads[i]);
+    EXPECT_EQ(strides[i], src_strides[i]);
+    EXPECT_EQ(dilations[i], src_dilations[i]);
+  }
+  EXPECT_EQ(mode, CUDNN_CROSS_CORRELATION);
+}
+
+TEST(CudnnHelper, ScopedPoolingDescriptor) {
+  using paddle::platform::ScopedPoolingDescriptor;
+  using paddle::platform::PoolingMode;
+
+  ScopedPoolingDescriptor pool_desc;
+  std::vector<int> src_kernel = {2, 2, 5};
+  std::vector<int> src_pads = {1, 1, 2};
+  std::vector<int> src_strides = {2, 2, 3};
+  auto desc = pool_desc.descriptor(PoolingMode::kMaximum, src_kernel, src_pads,
+                                   src_strides);
+
+  cudnnPoolingMode_t mode;
+  cudnnNanPropagation_t nan_t = CUDNN_PROPAGATE_NAN;
+  int nd;
+  std::vector<int> kernel(3);
+  std::vector<int> pads(3);
+  std::vector<int> strides(3);
+  paddle::platform::dynload::cudnnGetPoolingNdDescriptor(
+      desc, 3, &mode, &nan_t, &nd, kernel.data(), pads.data(), strides.data());
+
+  EXPECT_EQ(nd, 3);
+  for (size_t i = 0; i < src_pads.size(); ++i) {
+    EXPECT_EQ(kernel[i], src_kernel[i]);
+    EXPECT_EQ(pads[i], src_pads[i]);
+    EXPECT_EQ(strides[i], src_strides[i]);
+  }
+  EXPECT_EQ(mode, CUDNN_POOLING_MAX);
+}
diff --git a/paddle/platform/dynload/CMakeLists.txt b/paddle/platform/dynload/CMakeLists.txt
index d205ead845..ceb66f84b6 100644
--- a/paddle/platform/dynload/CMakeLists.txt
+++ b/paddle/platform/dynload/CMakeLists.txt
@@ -1,2 +1,2 @@
 cc_library(dynamic_loader SRCS dynamic_loader.cc DEPS glog gflags)
-nv_library(dynload_cuda SRCS cublas.cc cudnn.cc curand.cc)
+nv_library(dynload_cuda SRCS cublas.cc cudnn.cc curand.cc DEPS dynamic_loader)
diff --git a/paddle/platform/dynload/cudnn.h b/paddle/platform/dynload/cudnn.h
index ef0dd85b08..0120625b7c 100644
--- a/paddle/platform/dynload/cudnn.h
+++ b/paddle/platform/dynload/cudnn.h
@@ -62,19 +62,27 @@ extern void* cudnn_dso_handle;
 #define CUDNN_DNN_ROUTINE_EACH(__macro)             \
   __macro(cudnnSetTensor4dDescriptor);              \
   __macro(cudnnSetTensor4dDescriptorEx);            \
+  __macro(cudnnSetTensorNdDescriptor);              \
+  __macro(cudnnGetTensorNdDescriptor);              \
   __macro(cudnnGetConvolutionNdForwardOutputDim);   \
   __macro(cudnnGetConvolutionForwardAlgorithm);     \
   __macro(cudnnCreateTensorDescriptor);             \
   __macro(cudnnDestroyTensorDescriptor);            \
   __macro(cudnnCreateFilterDescriptor);             \
   __macro(cudnnSetFilter4dDescriptor);              \
+  __macro(cudnnSetFilterNdDescriptor);              \
+  __macro(cudnnGetFilterNdDescriptor);              \
   __macro(cudnnSetPooling2dDescriptor);             \
+  __macro(cudnnSetPoolingNdDescriptor);             \
+  __macro(cudnnGetPoolingNdDescriptor);             \
   __macro(cudnnDestroyFilterDescriptor);            \
   __macro(cudnnCreateConvolutionDescriptor);        \
   __macro(cudnnCreatePoolingDescriptor);            \
   __macro(cudnnDestroyPoolingDescriptor);           \
   __macro(cudnnSetConvolution2dDescriptor);         \
   __macro(cudnnDestroyConvolutionDescriptor);       \
+  __macro(cudnnSetConvolutionNdDescriptor);         \
+  __macro(cudnnGetConvolutionNdDescriptor);         \
   __macro(cudnnCreate);                             \
   __macro(cudnnDestroy);                            \
   __macro(cudnnSetStream);                          \

From ed72af48cecb1462b14c2105e9451052fa583cde Mon Sep 17 00:00:00 2001
From: Xinghai Sun <sunxinghai1216@gmail.com>
Date: Fri, 1 Sep 2017 19:01:12 +0800
Subject: [PATCH 12/72] Add cos_sim op.

---
 paddle/operators/CMakeLists.txt               |  2 +-
 paddle/operators/cos_sim_op.cc                | 91 ++++++++++++++++++
 paddle/operators/cos_sim_op.cu                | 22 +++++
 paddle/operators/cos_sim_op.h                 | 93 +++++++++++++++++++
 paddle/pybind/pybind.cc                       |  1 +
 .../paddle/v2/framework/tests/CMakeLists.txt  |  1 +
 .../v2/framework/tests/gradient_checker.py    | 21 +++--
 .../paddle/v2/framework/tests/op_test_util.py |  8 +-
 .../v2/framework/tests/test_cos_sim_op.py     | 40 ++++++++
 9 files changed, 267 insertions(+), 12 deletions(-)
 create mode 100644 paddle/operators/cos_sim_op.cc
 create mode 100644 paddle/operators/cos_sim_op.cu
 create mode 100644 paddle/operators/cos_sim_op.h
 create mode 100644 python/paddle/v2/framework/tests/test_cos_sim_op.py

diff --git a/paddle/operators/CMakeLists.txt b/paddle/operators/CMakeLists.txt
index e5efcccb0e..25dbd236e6 100644
--- a/paddle/operators/CMakeLists.txt
+++ b/paddle/operators/CMakeLists.txt
@@ -56,7 +56,7 @@ list(REMOVE_ITEM GENERAL_OPS
 op_library(net_op SRCS net_op.cc)
 op_library(minus_op SRCS minus_op.cc minus_op.cu DEPS scale_op)
 op_library(mul_op SRCS mul_op.cc mul_op.cu DEPS math_function)
-op_library(recurrent_op SRCS recurrent_op.cc rnn/recurrent_op_utils.cc 
+op_library(recurrent_op SRCS recurrent_op.cc rnn/recurrent_op_utils.cc
   DEPS framework_proto tensor operator net_op)
 op_library(scale_op SRCS scale_op.cc scale_op.cu DEPS net_op)
 
diff --git a/paddle/operators/cos_sim_op.cc b/paddle/operators/cos_sim_op.cc
new file mode 100644
index 0000000000..21a616522b
--- /dev/null
+++ b/paddle/operators/cos_sim_op.cc
@@ -0,0 +1,91 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. */
+
+#include "paddle/operators/cos_sim_op.h"
+
+namespace paddle {
+namespace operators {
+
+using framework::Tensor;
+
+class CosSimOp : public framework::OperatorWithKernel {
+ public:
+  using framework::OperatorWithKernel::OperatorWithKernel;
+
+ protected:
+  void InferShape(const framework::InferShapeContext &ctx) const override {
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("X"), "Input(X) should not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("Y"), "Input(Y) should not be null.");
+    PADDLE_ENFORCE_EQ(ctx.Input<Tensor>("X")->dims(),
+                      ctx.Input<Tensor>("Y")->dims(),
+                      "Dimensions of Input(X) and Input(Y) must be the same.");
+
+    auto dims = ctx.Input<Tensor>("X")->dims();
+    ctx.Output<Tensor>("Out")->Resize({dims[0], 1});
+  }
+};
+
+class CosSimOpMaker : public framework::OpProtoAndCheckerMaker {
+ public:
+  CosSimOpMaker(framework::OpProto *proto, framework::OpAttrChecker *op_checker)
+      : OpProtoAndCheckerMaker(proto, op_checker) {
+    AddInput("X", "The first input of cos_sim op.");
+    AddInput("Y", "The second input of cos_sim op.");
+    AddOutput("Out", "The output of cos_sim op.");
+    AddComment(R"DOC(
+Cosine Similarity Operator.
+
+The equation is: Out = X^T * Y / (sqrt(X^T * X) * sqrt(Y^T * Y))
+)DOC");
+  }
+};
+
+class CosSimOpGrad : public framework::OperatorWithKernel {
+ public:
+  using framework::OperatorWithKernel::OperatorWithKernel;
+
+ protected:
+  void InferShape(const framework::InferShapeContext &ctx) const override {
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("X"), "Input(X) should not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("Y"), "Input(Y) should not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar(framework::GradVarName("Out")),
+                            "Input(Out@GRAD) should not be null.");
+
+    auto x_dims = ctx.Input<Tensor>("X")->dims();
+    auto y_dims = ctx.Input<Tensor>("Y")->dims();
+    auto out_dims = ctx.Input<Tensor>(framework::GradVarName("Out"))->dims();
+    PADDLE_ENFORCE_EQ(x_dims, y_dims,
+                      "Dimensions of Input(X) and Input(Y) must be the same.");
+    PADDLE_ENFORCE_EQ(out_dims[0], x_dims[0],
+                      "1st dimension of Out@GRAD must equal to Input(X)");
+    PADDLE_ENFORCE_EQ(out_dims[1], 1,
+                      "1st dimension of Out@GRAD must equal to Input(X)");
+
+    auto *x_grad = ctx.Output<Tensor>(framework::GradVarName("X"));
+    auto *y_grad = ctx.Output<Tensor>(framework::GradVarName("Y"));
+    x_grad->Resize(x_dims);
+    y_grad->Resize(y_dims);
+  }
+};
+
+}  // namespace operators
+}  // namespace paddle
+
+namespace ops = paddle::operators;
+REGISTER_OP(cos_sim, ops::CosSimOp, ops::CosSimOpMaker, cos_sim_grad,
+            ops::CosSimOpGrad);
+REGISTER_OP_CPU_KERNEL(cos_sim,
+                       ops::CosSimKernel<paddle::platform::CPUPlace, float>);
+REGISTER_OP_CPU_KERNEL(
+    cos_sim_grad, ops::CosSimGradKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/cos_sim_op.cu b/paddle/operators/cos_sim_op.cu
new file mode 100644
index 0000000000..0cb8fd26de
--- /dev/null
+++ b/paddle/operators/cos_sim_op.cu
@@ -0,0 +1,22 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. */
+
+#define EIGEN_USE_GPU
+#include "paddle/operators/cos_sim_op.h"
+
+namespace ops = paddle::operators;
+REGISTER_OP_GPU_KERNEL(cos_sim,
+                       ops::CosSimKernel<paddle::platform::GPUPlace, float>);
+REGISTER_OP_GPU_KERNEL(
+    cos_sim_grad, ops::CosSimGradKernel<paddle::platform::GPUPlace, float>);
diff --git a/paddle/operators/cos_sim_op.h b/paddle/operators/cos_sim_op.h
new file mode 100644
index 0000000000..5247087cc1
--- /dev/null
+++ b/paddle/operators/cos_sim_op.h
@@ -0,0 +1,93 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. */
+
+#pragma once
+#include "paddle/framework/eigen.h"
+#include "paddle/framework/op_registry.h"
+
+namespace paddle {
+namespace operators {
+
+using Tensor = framework::Tensor;
+template <typename T, int MajorType = Eigen::RowMajor,
+          typename IndexType = Eigen::DenseIndex>
+using EigenMatrix = framework::EigenMatrix<T, MajorType, IndexType>;
+
+template <typename Place, typename T>
+class CosSimKernel : public framework::OpKernel {
+ public:
+  void Compute(const framework::ExecutionContext& context) const override {
+    auto* x = context.Input<Tensor>("X");
+    auto* y = context.Input<Tensor>("Y");
+    auto* z = context.Output<Tensor>("Out");
+
+    z->mutable_data<T>(context.GetPlace());
+
+    auto dims = x->dims();
+    int size = static_cast<int>(framework::product(dims));
+    auto new_dims = framework::make_ddim({dims[0], size / dims[0]});
+    auto X = EigenMatrix<T>::From(*x, new_dims);
+    auto Y = EigenMatrix<T>::From(*y, new_dims);
+    auto Z = EigenMatrix<T>::From(*z, new_dims);
+
+    auto XY = (X * Y).sum(Eigen::array<int, 1>({1}));
+    auto XX = (X * X).sum(Eigen::array<int, 1>({1}));
+    auto YY = (Y * Y).sum(Eigen::array<int, 1>({1}));
+    auto place = context.GetEigenDevice<Place>();
+    Z.device(place) = XY / XX.sqrt() / YY.sqrt();
+  }
+};
+
+template <typename Place, typename T>
+class CosSimGradKernel : public framework::OpKernel {
+ public:
+  void Compute(const framework::ExecutionContext& context) const override {
+    auto* x = context.Input<Tensor>("X");
+    auto* y = context.Input<Tensor>("Y");
+    auto* z = context.Input<Tensor>("Out");
+    auto* grad_x = context.Output<Tensor>(framework::GradVarName("X"));
+    auto* grad_y = context.Output<Tensor>(framework::GradVarName("Y"));
+    auto* grad_z = context.Input<Tensor>(framework::GradVarName("Out"));
+
+    grad_x->mutable_data<T>(context.GetPlace());
+    grad_y->mutable_data<T>(context.GetPlace());
+
+    auto dims = x->dims();
+    int size = static_cast<int>(framework::product(dims));
+    auto new_dims = framework::make_ddim({dims[0], size / dims[0]});
+    auto X = EigenMatrix<T>::From(*x, new_dims);
+    auto Y = EigenMatrix<T>::From(*y, new_dims);
+    auto Z = EigenMatrix<T>::From(*z);
+    auto dX = EigenMatrix<T>::From(*grad_x, new_dims);
+    auto dY = EigenMatrix<T>::From(*grad_y, new_dims);
+    auto dZ = EigenMatrix<T>::From(*grad_z);
+
+    auto XX = (X * X).sum(Eigen::array<int, 1>({1}));
+    auto YY = (Y * Y).sum(Eigen::array<int, 1>({1}));
+    Eigen::DSizes<int, 2> bcast(1, dims[1]);
+    auto denominator_bcast = (XX.sqrt() * YY.sqrt()).broadcast(bcast);
+    auto Z_bcast = Z.broadcast(bcast);
+    auto dZ_bcast = dZ.broadcast(bcast);
+    auto place = context.GetEigenDevice<Place>();
+    dX.device(place) =
+        dZ_bcast * (Y / denominator_bcast - Z_bcast * X / XX.broadcast(bcast));
+    dY.device(place) =
+        dZ_bcast * (X / denominator_bcast - Z_bcast * Y / YY.broadcast(bcast));
+    // dX.device(place) = X;
+    // Y.device(place) = Y;
+  }
+};
+
+}  // namespace operators
+}  // namespace paddle
diff --git a/paddle/pybind/pybind.cc b/paddle/pybind/pybind.cc
index 3bc150ccb7..a8ec35dfad 100644
--- a/paddle/pybind/pybind.cc
+++ b/paddle/pybind/pybind.cc
@@ -46,6 +46,7 @@ USE_OP(lookup_table);
 USE_OP(scale);
 USE_OP_ITSELF(identity);
 USE_OP(minus);
+USE_OP(cos_sim);
 USE_CPU_ONLY_OP(gather);
 USE_CPU_ONLY_OP(scatter);
 
diff --git a/python/paddle/v2/framework/tests/CMakeLists.txt b/python/paddle/v2/framework/tests/CMakeLists.txt
index 661ebd8964..e0f77d7973 100644
--- a/python/paddle/v2/framework/tests/CMakeLists.txt
+++ b/python/paddle/v2/framework/tests/CMakeLists.txt
@@ -4,6 +4,7 @@ py_test(test_scope SRCS test_scope.py)
 
 py_test(test_tensor SRCS test_tensor.py)
 py_test(test_mul_op SRCS test_mul_op.py)
+py_test(test_cos_sim_op SRCS test_cos_sim_op.py)
 
 py_test(test_mean_op SRCS test_mean_op.py)
 
diff --git a/python/paddle/v2/framework/tests/gradient_checker.py b/python/paddle/v2/framework/tests/gradient_checker.py
index 518f828bac..bf01ea4876 100644
--- a/python/paddle/v2/framework/tests/gradient_checker.py
+++ b/python/paddle/v2/framework/tests/gradient_checker.py
@@ -36,13 +36,13 @@ def get_numeric_gradient(op,
                          in_place=False):
     """
     Get Numeric Gradient for an operator's input.
-    
-    :param op: C++ operator instance, could be an network 
-    :param input_values: The input variables. Should be an dictionary, key is 
+
+    :param op: C++ operator instance, could be an network
+    :param input_values: The input variables. Should be an dictionary, key is
     variable name. Value is numpy array.
-    :param output_name: The final output variable name. 
+    :param output_name: The final output variable name.
     :param input_to_check: The input variable need to get gradient.
-    :param delta: The perturbation value for numeric gradient method. The 
+    :param delta: The perturbation value for numeric gradient method. The
     smaller delta is, the more accurate result will get. But if that delta is
      too small, it could occur numerical stability problem.
     :param local_scope: The local scope used for get_numeric_gradient.
@@ -229,9 +229,9 @@ class GradientChecker(unittest.TestCase):
         """Use relative error for the comparison.
 
         :param numeric_grads: the numerical graidents.
-        :type numeric_grads: a list of numpy.array 
+        :type numeric_grads: a list of numpy.array
         :param analytic_grads: the analytical graidents.
-        :type analytic_grads: a list of numpy.array 
+        :type analytic_grads: a list of numpy.array
         :param name: the names of gradients, used to print for debug.
         :type names: a list of string
         :param msg_prefix: string info, used to print for debug.
@@ -304,6 +304,13 @@ class GradientChecker(unittest.TestCase):
             # get analytical gradients according to different device
             analytic_grads = self.__get_gradient(forward_op, backward_op,
                                                  input_vars, check_names, place)
+            #print(numeric_grads[0], numeric_grads[0].shape)
+            print("dim0: ", numeric_grads[0], numeric_grads[0].shape)
+            print("dim0: ", analytic_grads[0], analytic_grads[0].shape)
+            print("---------------------")
+            print("dim1: ", numeric_grads[1], numeric_grads[1].shape)
+            print("dim1: ", analytic_grads[1], analytic_grads[1].shape)
+            assert False
             self.__assert_is_close(numeric_grads, analytic_grads, check_names,
                                    max_relative_error,
                                    "Gradient Check On %s" % str(place))
diff --git a/python/paddle/v2/framework/tests/op_test_util.py b/python/paddle/v2/framework/tests/op_test_util.py
index 3bc05a0fec..a4899355b5 100644
--- a/python/paddle/v2/framework/tests/op_test_util.py
+++ b/python/paddle/v2/framework/tests/op_test_util.py
@@ -6,13 +6,13 @@ from paddle.v2.framework.op import Operator
 class OpTestMeta(type):
     """
     Operator Test ClassMeta.
-    
-    It injects `test_all` method into user's OperatorTest class, to make Python 
+
+    It injects `test_all` method into user's OperatorTest class, to make Python
     unittest module run that method.
-    
+
     The `test_all` read what value is stored in `self`. It use self's values to
     create and run a operator, and check whether that op is OK or not.
-    
+
     See `test_add_two_op` for example usage.
     """
 
diff --git a/python/paddle/v2/framework/tests/test_cos_sim_op.py b/python/paddle/v2/framework/tests/test_cos_sim_op.py
new file mode 100644
index 0000000000..f3b04d25f2
--- /dev/null
+++ b/python/paddle/v2/framework/tests/test_cos_sim_op.py
@@ -0,0 +1,40 @@
+import unittest
+import numpy as np
+from gradient_checker import GradientChecker, create_op
+from op_test_util import OpTestMeta
+
+
+class TestCosSimOp(unittest.TestCase):
+    __metaclass__ = OpTestMeta
+
+    def setUp(self):
+        self.type = "cos_sim"
+        self.inputs = {
+            'X': np.random.random((32, 84)).astype("float32"),
+            'Y': np.random.random((32, 84)).astype("float32")
+        }
+        expect = (self.inputs['X'] * self.inputs['Y']).sum(axis=1) / \
+                 np.linalg.norm(self.inputs['X'], axis=1) / \
+                 np.linalg.norm(self.inputs['Y'], axis=1)
+        expect = np.expand_dims(expect, 1)
+        self.outputs = {'Out': expect}
+
+
+class CosSimGradOpTest(GradientChecker):
+    def test_cos_sim(self):
+        op = create_op("cos_sim")
+        #inputs = {
+        #'X': np.random.random((2, 2)).astype("float32"),
+        #'Y': np.random.random((2, 2)).astype("float32")
+        #}
+        inputs = {
+            'X': np.array([[0.9, 0.6], [1.9, 1.6]]).astype("float32"),
+            'Y': np.array([[0.7, 0.8], [1.7, 1.8]]).astype("float32")
+        }
+        print(inputs)
+        self.check_grad(
+            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.5)
+
+
+if __name__ == '__main__':
+    unittest.main()

From 9d2909be2abcb9b8728f7c4de7437c07a1254b8b Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Fri, 1 Sep 2017 19:27:52 +0800
Subject: [PATCH 13/72] rename add_op to add_two_op

---
 paddle/framework/CMakeLists.txt               | 2 +-
 paddle/operators/{add_op.cc => add_two_op.cc} | 2 +-
 paddle/operators/{add_op.cu => add_two_op.cu} | 2 +-
 paddle/operators/{add_op.h => add_two_op.h}   | 0
 4 files changed, 3 insertions(+), 3 deletions(-)
 rename paddle/operators/{add_op.cc => add_two_op.cc} (98%)
 rename paddle/operators/{add_op.cu => add_two_op.cu} (95%)
 rename paddle/operators/{add_op.h => add_two_op.h} (100%)

diff --git a/paddle/framework/CMakeLists.txt b/paddle/framework/CMakeLists.txt
index c0838d9b75..e138517b6b 100644
--- a/paddle/framework/CMakeLists.txt
+++ b/paddle/framework/CMakeLists.txt
@@ -25,7 +25,7 @@ cc_test(operator_test SRCS operator_test.cc DEPS operator op_registry)
 cc_library(grad_op_builder SRCS grad_op_builder.cc DEPS operator)
 cc_library(op_registry SRCS op_registry.cc DEPS grad_op_builder)
 cc_test(op_registry_test SRCS op_registry_test.cc DEPS op_registry)
-cc_test(grad_op_builder_test SRCS grad_op_builder_test.cc DEPS grad_op_builder op_registry add_op)
+cc_test(grad_op_builder_test SRCS grad_op_builder_test.cc DEPS grad_op_builder op_registry add_two_op)
 
 py_proto_compile(framework_py_proto SRCS framework.proto)
 # Generate an empty __init__.py to make framework_py_proto as a valid python module.
diff --git a/paddle/operators/add_op.cc b/paddle/operators/add_two_op.cc
similarity index 98%
rename from paddle/operators/add_op.cc
rename to paddle/operators/add_two_op.cc
index 8ab748ed71..bc99e306e0 100644
--- a/paddle/operators/add_op.cc
+++ b/paddle/operators/add_two_op.cc
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License. */
 
-#include "paddle/operators/add_op.h"
+#include "paddle/operators/add_two_op.h"
 
 namespace paddle {
 namespace operators {
diff --git a/paddle/operators/add_op.cu b/paddle/operators/add_two_op.cu
similarity index 95%
rename from paddle/operators/add_op.cu
rename to paddle/operators/add_two_op.cu
index cec5f558cb..acc03b2c8b 100644
--- a/paddle/operators/add_op.cu
+++ b/paddle/operators/add_two_op.cu
@@ -14,7 +14,7 @@
 
 #define EIGEN_USE_GPU
 #include "paddle/framework/op_registry.h"
-#include "paddle/operators/add_op.h"
+#include "paddle/operators/add_two_op.h"
 
 namespace ops = paddle::operators;
 REGISTER_OP_GPU_KERNEL(add_two,
diff --git a/paddle/operators/add_op.h b/paddle/operators/add_two_op.h
similarity index 100%
rename from paddle/operators/add_op.h
rename to paddle/operators/add_two_op.h

From ba1aa60700db8cf8abb4b7efbf6c67774f12c3c7 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Fri, 1 Sep 2017 21:48:38 +0800
Subject: [PATCH 14/72] fix the problem that long message will be truncated.

---
 paddle/gserver/layers/PrintLayer.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/paddle/gserver/layers/PrintLayer.cpp b/paddle/gserver/layers/PrintLayer.cpp
index 0a1e17b9aa..e83ae34bbe 100644
--- a/paddle/gserver/layers/PrintLayer.cpp
+++ b/paddle/gserver/layers/PrintLayer.cpp
@@ -48,7 +48,16 @@ public:
                  << inputLayers_.size() << ") at " << getName();
     }
     s << format.substr(pos);
-    LOG(INFO) << s.str();
+
+    const std::string delimiter("\n");
+    std::string content = s.str();
+    std::string::size_type foundPos = 0;
+    std::string::size_type prevPos = 0;
+    while ((foundPos = content.find(delimiter, prevPos)) != std::string::npos) {
+      LOG(INFO) << content.substr(prevPos, foundPos - prevPos);
+      prevPos = foundPos + delimiter.size();
+    }
+    LOG(INFO) << content.substr(prevPos);
   }
 
   void backward(const UpdateCallback& callback) override {}

From 91215bcef907baffdf52bb7894a0a33d0253c16f Mon Sep 17 00:00:00 2001
From: Xinghai Sun <sunxinghai1216@gmail.com>
Date: Sat, 2 Sep 2017 17:25:30 +0800
Subject: [PATCH 15/72] Fix a bug causing wrong gradient results in cos_sim op.

---
 paddle/operators/cos_sim_op.cc                | 32 ++++++++++----
 paddle/operators/cos_sim_op.h                 | 34 +++++++++------
 .../v2/framework/tests/gradient_checker.py    |  7 ----
 .../v2/framework/tests/test_cos_sim_op.py     | 42 ++++++++++++-------
 4 files changed, 71 insertions(+), 44 deletions(-)

diff --git a/paddle/operators/cos_sim_op.cc b/paddle/operators/cos_sim_op.cc
index 21a616522b..3760d0b161 100644
--- a/paddle/operators/cos_sim_op.cc
+++ b/paddle/operators/cos_sim_op.cc
@@ -25,14 +25,16 @@ class CosSimOp : public framework::OperatorWithKernel {
 
  protected:
   void InferShape(const framework::InferShapeContext &ctx) const override {
-    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("X"), "Input(X) should not be null.");
-    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("Y"), "Input(Y) should not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("X"), "Input(X) must not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("Y"), "Input(Y) must not be null.");
     PADDLE_ENFORCE_EQ(ctx.Input<Tensor>("X")->dims(),
                       ctx.Input<Tensor>("Y")->dims(),
                       "Dimensions of Input(X) and Input(Y) must be the same.");
 
     auto dims = ctx.Input<Tensor>("X")->dims();
     ctx.Output<Tensor>("Out")->Resize({dims[0], 1});
+    ctx.Output<Tensor>("XNorm")->Resize({dims[0], 1});
+    ctx.Output<Tensor>("YNorm")->Resize({dims[0], 1});
   }
 };
 
@@ -43,6 +45,9 @@ class CosSimOpMaker : public framework::OpProtoAndCheckerMaker {
     AddInput("X", "The first input of cos_sim op.");
     AddInput("Y", "The second input of cos_sim op.");
     AddOutput("Out", "The output of cos_sim op.");
+    AddOutput("XNorm", "Row norm of the first input.").AsIntermediate();
+    AddOutput("YNorm", "Row norm of the second input.").AsIntermediate();
+
     AddComment(R"DOC(
 Cosine Similarity Operator.
 
@@ -57,20 +62,31 @@ class CosSimOpGrad : public framework::OperatorWithKernel {
 
  protected:
   void InferShape(const framework::InferShapeContext &ctx) const override {
-    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("X"), "Input(X) should not be null.");
-    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("Y"), "Input(Y) should not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("X"), "Input(X) must not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("Y"), "Input(Y) must not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("XNorm"),
+                            "Input(XNorm) must not be null.");
+    PADDLE_ENFORCE_NOT_NULL(ctx.InputVar("YNorm"),
+                            "Input(YNorm) must not be null.");
     PADDLE_ENFORCE_NOT_NULL(ctx.InputVar(framework::GradVarName("Out")),
-                            "Input(Out@GRAD) should not be null.");
+                            "Input(Out@GRAD) must not be null.");
 
     auto x_dims = ctx.Input<Tensor>("X")->dims();
     auto y_dims = ctx.Input<Tensor>("Y")->dims();
+    auto xnorm_dims = ctx.Input<Tensor>("XNorm")->dims();
+    auto ynorm_dims = ctx.Input<Tensor>("YNorm")->dims();
     auto out_dims = ctx.Input<Tensor>(framework::GradVarName("Out"))->dims();
     PADDLE_ENFORCE_EQ(x_dims, y_dims,
                       "Dimensions of Input(X) and Input(Y) must be the same.");
+    PADDLE_ENFORCE_EQ(xnorm_dims[0], x_dims[0],
+                      "1st dimension of XNorm must equal that of Input(X).");
+    PADDLE_ENFORCE_EQ(xnorm_dims[1], 1, "2st dimension of XNorm must be one.");
+    PADDLE_ENFORCE_EQ(ynorm_dims[0], y_dims[0],
+                      "1st dimension of YNorm must equal that of Input(Y).");
+    PADDLE_ENFORCE_EQ(ynorm_dims[1], 1, "2st dimension of YNorm must be one.");
     PADDLE_ENFORCE_EQ(out_dims[0], x_dims[0],
-                      "1st dimension of Out@GRAD must equal to Input(X)");
-    PADDLE_ENFORCE_EQ(out_dims[1], 1,
-                      "1st dimension of Out@GRAD must equal to Input(X)");
+                      "1st dimension of Out@GRAD must equal that of Input(X)");
+    PADDLE_ENFORCE_EQ(out_dims[1], 1, "1st dimension of Out@GRAD must be one.");
 
     auto *x_grad = ctx.Output<Tensor>(framework::GradVarName("X"));
     auto *y_grad = ctx.Output<Tensor>(framework::GradVarName("Y"));
diff --git a/paddle/operators/cos_sim_op.h b/paddle/operators/cos_sim_op.h
index 5247087cc1..69d35d8bc2 100644
--- a/paddle/operators/cos_sim_op.h
+++ b/paddle/operators/cos_sim_op.h
@@ -31,21 +31,27 @@ class CosSimKernel : public framework::OpKernel {
     auto* x = context.Input<Tensor>("X");
     auto* y = context.Input<Tensor>("Y");
     auto* z = context.Output<Tensor>("Out");
+    auto* x_norm = context.Output<Tensor>("XNorm");
+    auto* y_norm = context.Output<Tensor>("YNorm");
 
     z->mutable_data<T>(context.GetPlace());
+    x_norm->mutable_data<T>(context.GetPlace());
+    y_norm->mutable_data<T>(context.GetPlace());
 
     auto dims = x->dims();
     int size = static_cast<int>(framework::product(dims));
     auto new_dims = framework::make_ddim({dims[0], size / dims[0]});
     auto X = EigenMatrix<T>::From(*x, new_dims);
     auto Y = EigenMatrix<T>::From(*y, new_dims);
-    auto Z = EigenMatrix<T>::From(*z, new_dims);
+    auto Z = EigenMatrix<T>::From(*z);
+    auto XNorm = EigenMatrix<T>::From(*x_norm);
+    auto YNorm = EigenMatrix<T>::From(*y_norm);
 
-    auto XY = (X * Y).sum(Eigen::array<int, 1>({1}));
-    auto XX = (X * X).sum(Eigen::array<int, 1>({1}));
-    auto YY = (Y * Y).sum(Eigen::array<int, 1>({1}));
     auto place = context.GetEigenDevice<Place>();
-    Z.device(place) = XY / XX.sqrt() / YY.sqrt();
+    auto XY = (X * Y).sum(Eigen::array<int, 1>({1}));
+    XNorm.device(place) = (X * X).sum(Eigen::array<int, 1>({1})).sqrt();
+    YNorm.device(place) = (Y * Y).sum(Eigen::array<int, 1>({1})).sqrt();
+    Z.device(place) = XY / XNorm / YNorm;
   }
 };
 
@@ -56,6 +62,8 @@ class CosSimGradKernel : public framework::OpKernel {
     auto* x = context.Input<Tensor>("X");
     auto* y = context.Input<Tensor>("Y");
     auto* z = context.Input<Tensor>("Out");
+    auto* x_norm = context.Input<Tensor>("XNorm");
+    auto* y_norm = context.Input<Tensor>("YNorm");
     auto* grad_x = context.Output<Tensor>(framework::GradVarName("X"));
     auto* grad_y = context.Output<Tensor>(framework::GradVarName("Y"));
     auto* grad_z = context.Input<Tensor>(framework::GradVarName("Out"));
@@ -69,23 +77,23 @@ class CosSimGradKernel : public framework::OpKernel {
     auto X = EigenMatrix<T>::From(*x, new_dims);
     auto Y = EigenMatrix<T>::From(*y, new_dims);
     auto Z = EigenMatrix<T>::From(*z);
+    auto X_norm = EigenMatrix<T>::From(*x_norm);
+    auto Y_norm = EigenMatrix<T>::From(*y_norm);
     auto dX = EigenMatrix<T>::From(*grad_x, new_dims);
     auto dY = EigenMatrix<T>::From(*grad_y, new_dims);
     auto dZ = EigenMatrix<T>::From(*grad_z);
 
-    auto XX = (X * X).sum(Eigen::array<int, 1>({1}));
-    auto YY = (Y * Y).sum(Eigen::array<int, 1>({1}));
-    Eigen::DSizes<int, 2> bcast(1, dims[1]);
-    auto denominator_bcast = (XX.sqrt() * YY.sqrt()).broadcast(bcast);
+    Eigen::DSizes<int, 2> bcast(1, new_dims[1]);
     auto Z_bcast = Z.broadcast(bcast);
     auto dZ_bcast = dZ.broadcast(bcast);
     auto place = context.GetEigenDevice<Place>();
+    auto X_snorm_bcast = X_norm.square().eval().broadcast(bcast);
+    auto Y_snorm_bcast = Y_norm.square().eval().broadcast(bcast);
+    auto norm_prod_bcast = (X_norm * Y_norm).eval().broadcast(bcast);
     dX.device(place) =
-        dZ_bcast * (Y / denominator_bcast - Z_bcast * X / XX.broadcast(bcast));
+        dZ_bcast * (Y / norm_prod_bcast - Z_bcast * X / X_snorm_bcast);
     dY.device(place) =
-        dZ_bcast * (X / denominator_bcast - Z_bcast * Y / YY.broadcast(bcast));
-    // dX.device(place) = X;
-    // Y.device(place) = Y;
+        dZ_bcast * (X / norm_prod_bcast - Z_bcast * Y / Y_snorm_bcast);
   }
 };
 
diff --git a/python/paddle/v2/framework/tests/gradient_checker.py b/python/paddle/v2/framework/tests/gradient_checker.py
index bf01ea4876..409b3caf33 100644
--- a/python/paddle/v2/framework/tests/gradient_checker.py
+++ b/python/paddle/v2/framework/tests/gradient_checker.py
@@ -304,13 +304,6 @@ class GradientChecker(unittest.TestCase):
             # get analytical gradients according to different device
             analytic_grads = self.__get_gradient(forward_op, backward_op,
                                                  input_vars, check_names, place)
-            #print(numeric_grads[0], numeric_grads[0].shape)
-            print("dim0: ", numeric_grads[0], numeric_grads[0].shape)
-            print("dim0: ", analytic_grads[0], analytic_grads[0].shape)
-            print("---------------------")
-            print("dim1: ", numeric_grads[1], numeric_grads[1].shape)
-            print("dim1: ", analytic_grads[1], analytic_grads[1].shape)
-            assert False
             self.__assert_is_close(numeric_grads, analytic_grads, check_names,
                                    max_relative_error,
                                    "Gradient Check On %s" % str(place))
diff --git a/python/paddle/v2/framework/tests/test_cos_sim_op.py b/python/paddle/v2/framework/tests/test_cos_sim_op.py
index f3b04d25f2..a19be47f76 100644
--- a/python/paddle/v2/framework/tests/test_cos_sim_op.py
+++ b/python/paddle/v2/framework/tests/test_cos_sim_op.py
@@ -10,30 +10,40 @@ class TestCosSimOp(unittest.TestCase):
     def setUp(self):
         self.type = "cos_sim"
         self.inputs = {
-            'X': np.random.random((32, 84)).astype("float32"),
-            'Y': np.random.random((32, 84)).astype("float32")
+            'X': np.random.random((32, 64)).astype("float32"),
+            'Y': np.random.random((32, 64)).astype("float32")
+        }
+        expect_x_norm = np.linalg.norm(self.inputs['X'], axis=1)
+        expect_y_norm = np.linalg.norm(self.inputs['Y'], axis=1)
+        expect_out = (self.inputs['X'] * self.inputs['Y']).sum(axis=1) / \
+            expect_x_norm / expect_y_norm
+        self.outputs = {
+            'XNorm': np.expand_dims(expect_x_norm, 1),
+            'YNorm': np.expand_dims(expect_y_norm, 1),
+            'Out': np.expand_dims(expect_out, 1)
         }
-        expect = (self.inputs['X'] * self.inputs['Y']).sum(axis=1) / \
-                 np.linalg.norm(self.inputs['X'], axis=1) / \
-                 np.linalg.norm(self.inputs['Y'], axis=1)
-        expect = np.expand_dims(expect, 1)
-        self.outputs = {'Out': expect}
 
 
 class CosSimGradOpTest(GradientChecker):
-    def test_cos_sim(self):
+    def test_cos_sim_2d(self):
+        op = create_op("cos_sim")
+        inputs = {
+            'X': np.random.random((10, 5)).astype("float32"),
+            'Y': np.random.random((10, 5)).astype("float32")
+        }
+        self.compare_grad(op, inputs)
+        self.check_grad(
+            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.05)
+
+    def test_cos_sim_3d(self):
         op = create_op("cos_sim")
-        #inputs = {
-        #'X': np.random.random((2, 2)).astype("float32"),
-        #'Y': np.random.random((2, 2)).astype("float32")
-        #}
         inputs = {
-            'X': np.array([[0.9, 0.6], [1.9, 1.6]]).astype("float32"),
-            'Y': np.array([[0.7, 0.8], [1.7, 1.8]]).astype("float32")
+            'X': np.random.random((10, 5, 2)).astype("float32"),
+            'Y': np.random.random((10, 5, 2)).astype("float32")
         }
-        print(inputs)
+        self.compare_grad(op, inputs)
         self.check_grad(
-            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.5)
+            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.05)
 
 
 if __name__ == '__main__':

From 6fcdc91638c226209aae1244c9dcaf6882378dca Mon Sep 17 00:00:00 2001
From: qiaolongfei <qiaolongfei@baidu.com>
Date: Sat, 2 Sep 2017 13:30:58 -0700
Subject: [PATCH 16/72] add op() to InferShapeContext

---
 paddle/framework/operator.h            |  5 +++++
 paddle/framework/operator_test.cc      | 12 ++++++------
 paddle/operators/gaussian_random_op.cc |  6 +++---
 paddle/operators/mul_op.cc             |  4 ++--
 paddle/operators/scale_op.h            |  2 +-
 paddle/operators/sgd_op.h              |  2 +-
 paddle/operators/uniform_random_op.cc  |  6 +++---
 7 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/paddle/framework/operator.h b/paddle/framework/operator.h
index 8397570d26..9874a7c295 100644
--- a/paddle/framework/operator.h
+++ b/paddle/framework/operator.h
@@ -229,6 +229,10 @@ class InferShapeContext {
   InferShapeContext(const OperatorBase& op, const Scope& scope)
       : op_(op), scope_(scope) {}
 
+  const OperatorBase& op() const { return op_; }
+
+  const Scope& scope() const { return scope_; }
+
   size_t InputSize(const std::string& name) const {
     return op_.Inputs(name).size();
   }
@@ -312,6 +316,7 @@ class InferShapeContext {
     return res;
   }
 
+ private:
   const OperatorBase& op_;
   const Scope& scope_;
 };
diff --git a/paddle/framework/operator_test.cc b/paddle/framework/operator_test.cc
index 1d7efb7b94..f7c9e6b196 100644
--- a/paddle/framework/operator_test.cc
+++ b/paddle/framework/operator_test.cc
@@ -122,10 +122,10 @@ class CPUKernelTest : public OpKernel {
  public:
   void Compute(const ExecutionContext& ctx) const {
     std::cout << "this is cpu kernel" << std::endl;
-    std::cout << ctx.op_.DebugString() << std::endl;
+    std::cout << ctx.op().DebugString() << std::endl;
     cpu_kernel_run_num++;
-    ASSERT_EQ(ctx.op_.Input("x"), "IN1");
-    ASSERT_EQ(ctx.op_.Output("y"), "OUT1");
+    ASSERT_EQ(ctx.op().Input("x"), "IN1");
+    ASSERT_EQ(ctx.op().Output("y"), "OUT1");
   }
 };
 
@@ -148,7 +148,7 @@ class OpKernelTestMultiInputsProtoAndCheckerMaker
 class CPUKernalMultiInputsTest : public OpKernel {
  public:
   void Compute(const ExecutionContext& ctx) const {
-    auto xs = ctx.op_.Inputs("xs");
+    auto xs = ctx.op().Inputs("xs");
     ASSERT_EQ(xs.size(), 3UL);
     ASSERT_EQ(xs[0], "x0");
     ASSERT_EQ(xs[1], "x1");
@@ -172,10 +172,10 @@ class CPUKernalMultiInputsTest : public OpKernel {
     auto outTensor0 = ctx.MultiOutput<Tensor>("ys");
     ASSERT_EQ(outTensor0.size(), 2U);
 
-    auto k = ctx.op_.Input("k");
+    auto k = ctx.op().Input("k");
     ASSERT_EQ(k, "k0");
 
-    auto ys = ctx.op_.Outputs("ys");
+    auto ys = ctx.op().Outputs("ys");
     ASSERT_EQ(ys.size(), 2UL);
     ASSERT_EQ(ys[0], "y0");
     ASSERT_EQ(ys[1], "y1");
diff --git a/paddle/operators/gaussian_random_op.cc b/paddle/operators/gaussian_random_op.cc
index a85363ad81..9eb976fed1 100644
--- a/paddle/operators/gaussian_random_op.cc
+++ b/paddle/operators/gaussian_random_op.cc
@@ -19,13 +19,13 @@ template <typename T>
 class CPUGaussianRandomKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& context) const override {
-    float mean = context.op_.GetAttr<float>("mean");
-    float std = context.op_.GetAttr<float>("std");
+    float mean = context.op().GetAttr<float>("mean");
+    float std = context.op().GetAttr<float>("std");
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
 
     unsigned int seed =
-        static_cast<unsigned int>(context.op_.GetAttr<int>("seed"));
+        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
     std::minstd_rand engine;
     if (seed == 0) {
       seed = std::random_device()();
diff --git a/paddle/operators/mul_op.cc b/paddle/operators/mul_op.cc
index 173cc3850c..5b8b5f6c11 100644
--- a/paddle/operators/mul_op.cc
+++ b/paddle/operators/mul_op.cc
@@ -29,10 +29,10 @@ class MulOp : public framework::OperatorWithKernel {
     auto dim1 = ctx.Input<Tensor>("Y")->dims();
     PADDLE_ENFORCE_EQ(dim0.size(), 2,
                       "input X(%s) should be a tensor with 2 dims, a matrix",
-                      ctx.op_.Input("X"));
+                      ctx.op().Input("X"));
     PADDLE_ENFORCE_EQ(dim1.size(), 2,
                       "input Y(%s) should be a tensor with 2 dims, a matrix",
-                      ctx.op_.Input("Y"));
+                      ctx.op().Input("Y"));
     PADDLE_ENFORCE_EQ(
         dim0[1], dim1[0],
         "First matrix's width must be equal with second matrix's height.");
diff --git a/paddle/operators/scale_op.h b/paddle/operators/scale_op.h
index aea64f1b04..760b26f5e9 100644
--- a/paddle/operators/scale_op.h
+++ b/paddle/operators/scale_op.h
@@ -27,7 +27,7 @@ class ScaleKernel : public framework::OpKernel {
     auto* in = context.Input<framework::Tensor>("X");
     tensor->mutable_data<T>(in->place());
 
-    auto scale = static_cast<T>(context.op_.GetAttr<AttrType>("scale"));
+    auto scale = static_cast<T>(context.op().GetAttr<AttrType>("scale"));
 
     auto eigen_out = framework::EigenVector<T>::Flatten(*tensor);
     auto eigen_in = framework::EigenVector<T>::Flatten(*in);
diff --git a/paddle/operators/sgd_op.h b/paddle/operators/sgd_op.h
index a0b5000ffb..b54a7864b0 100644
--- a/paddle/operators/sgd_op.h
+++ b/paddle/operators/sgd_op.h
@@ -31,7 +31,7 @@ class SGDOpKernel : public framework::OpKernel {
     auto param = ctx.Input<Tensor>("param");
     auto grad = ctx.Input<Tensor>("grad");
     auto param_out = ctx.Output<Tensor>("param_out");
-    float lr = ctx.op_.GetAttr<float>("learning_rate");
+    float lr = ctx.op().GetAttr<float>("learning_rate");
 
     param_out->mutable_data<T>(ctx.GetPlace());
 
diff --git a/paddle/operators/uniform_random_op.cc b/paddle/operators/uniform_random_op.cc
index 29491137e6..dbff2a1365 100644
--- a/paddle/operators/uniform_random_op.cc
+++ b/paddle/operators/uniform_random_op.cc
@@ -27,15 +27,15 @@ class CPUUniformRandomKernel : public framework::OpKernel {
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
     unsigned int seed =
-        static_cast<unsigned int>(context.op_.GetAttr<int>("seed"));
+        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
     std::minstd_rand engine;
     if (seed == 0) {
       seed = std::random_device()();
     }
     engine.seed(seed);
     std::uniform_real_distribution<T> dist(
-        static_cast<T>(context.op_.GetAttr<float>("min")),
-        static_cast<T>(context.op_.GetAttr<float>("max")));
+        static_cast<T>(context.op().GetAttr<float>("min")),
+        static_cast<T>(context.op().GetAttr<float>("max")));
     ssize_t size = framework::product(tensor->dims());
     for (ssize_t i = 0; i < size; ++i) {
       data[i] = dist(engine);

From 848c317aa84aea797654a3f0ee7a2db0fb0e8d09 Mon Sep 17 00:00:00 2001
From: qiaolongfei <qiaolongfei@baidu.com>
Date: Sat, 2 Sep 2017 14:13:05 -0700
Subject: [PATCH 17/72] update gpu code

---
 paddle/operators/gaussian_random_op.cu | 6 +++---
 paddle/operators/uniform_random_op.cu  | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/paddle/operators/gaussian_random_op.cu b/paddle/operators/gaussian_random_op.cu
index 018a4bfcb2..9769fbcd2b 100644
--- a/paddle/operators/gaussian_random_op.cu
+++ b/paddle/operators/gaussian_random_op.cu
@@ -43,13 +43,13 @@ class GPUGaussianRandomKernel : public framework::OpKernel {
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
     unsigned int seed =
-        static_cast<unsigned int>(context.op_.GetAttr<int>("seed"));
+        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
     if (seed == 0) {
       std::random_device rd;
       seed = rd();
     }
-    T mean = static_cast<T>(context.op_.GetAttr<float>("mean"));
-    T std = static_cast<T>(context.op_.GetAttr<float>("std"));
+    T mean = static_cast<T>(context.op().GetAttr<float>("mean"));
+    T std = static_cast<T>(context.op().GetAttr<float>("std"));
     thrust::counting_iterator<unsigned int> index_sequence_begin(0);
     ssize_t N = framework::product(tensor->dims());
     thrust::transform(index_sequence_begin, index_sequence_begin + N,
diff --git a/paddle/operators/uniform_random_op.cu b/paddle/operators/uniform_random_op.cu
index 1d6709934c..fc8397f134 100644
--- a/paddle/operators/uniform_random_op.cu
+++ b/paddle/operators/uniform_random_op.cu
@@ -46,13 +46,13 @@ class GPUUniformRandomKernel : public framework::OpKernel {
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
     unsigned int seed =
-        static_cast<unsigned int>(context.op_.GetAttr<int>("seed"));
+        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
     if (seed == 0) {
       std::random_device rd;
       seed = rd();
     }
-    T min = static_cast<T>(context.op_.GetAttr<float>("min"));
-    T max = static_cast<T>(context.op_.GetAttr<float>("max"));
+    T min = static_cast<T>(context.op().GetAttr<float>("min"));
+    T max = static_cast<T>(context.op().GetAttr<float>("max"));
     thrust::counting_iterator<unsigned int> index_sequence_begin(0);
     ssize_t N = framework::product(tensor->dims());
     thrust::transform(index_sequence_begin, index_sequence_begin + N,

From 79b1f33a021a3d943d55734bc5692a57ca346a79 Mon Sep 17 00:00:00 2001
From: fengjiayi <fengjiayi@baidu.com>
Date: Sat, 2 Sep 2017 15:51:50 -0700
Subject: [PATCH 18/72] Remove `grad_op_type` in REGISTER_OP

---
 doc/howto/dev/new_op_cn.md               |  4 ++--
 paddle/framework/backward.md             |  2 +-
 paddle/framework/backward_test.cc        | 12 +++++-------
 paddle/framework/grad_op_builder_test.cc |  4 ++--
 paddle/framework/op_registry.h           | 25 ++++++++++--------------
 paddle/operators/add_op.cc               |  2 +-
 paddle/operators/cross_entropy_op.cc     |  3 +--
 paddle/operators/gather_op.cc            |  3 +--
 paddle/operators/lookup_table_op.cc      |  2 +-
 paddle/operators/mean_op.cc              |  2 +-
 paddle/operators/minus_op.cc             |  3 +--
 paddle/operators/mul_op.cc               |  2 +-
 paddle/operators/rowwise_add_op.cc       |  2 +-
 paddle/operators/scale_op.cc             |  2 +-
 paddle/operators/scatter_op.cc           |  3 +--
 paddle/operators/sigmoid_op.cc           |  3 +--
 paddle/operators/softmax_op.cc           |  3 +--
 17 files changed, 32 insertions(+), 45 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index 7f8da2da5a..ec79b7f42b 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -178,13 +178,13 @@ class MulKernel : public framework::OpKernel {
 
 ```c++
 namespace ops = paddle::operators;
-REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
+REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, ops::MulOpGrad);
 REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mul_grad,
               ops::MulGradKernel<paddle::platform::CPUPlace, float>);
 ```
     
-  - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,注册`ops::MulOpGrad`,类型名为`mul_grad`,
+  - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,并且注册`ops::MulOpGrad`为其反向Op。
   - `REGISTER_OP_WITHOUT_GRADIENT` : 用于注册没有反向的Op。
   - `REGISTER_OP_CPU_KERNEL` :注册`ops::MulKernel`类,并特化模板参数为`paddle::platform::CPUPlace`和`float`类型,同理,注册`ops::MulKernel`类。
 
diff --git a/paddle/framework/backward.md b/paddle/framework/backward.md
index 8aa6728a95..9500c92a26 100644
--- a/paddle/framework/backward.md
+++ b/paddle/framework/backward.md
@@ -18,7 +18,7 @@ A backward network is built up with several backward operators. Backward operato
 For example, we have got a `mul_op`, and we can register it's information and corresponding backward operator by the following macro:
 
 ```cpp
-REGISTER_OP(mul, MulOp, MulOpMaker, mul_grad, MulOpGrad);
+REGISTER_OP(mul, MulOp, MulOpMaker, MulOpGrad);
 ```
 
 `mul` is the operator's type. `MulOp` and `MulOpMaker` are the operator class and the operator maker class respectively.
diff --git a/paddle/framework/backward_test.cc b/paddle/framework/backward_test.cc
index f100c4d054..f4d99f55b5 100644
--- a/paddle/framework/backward_test.cc
+++ b/paddle/framework/backward_test.cc
@@ -148,16 +148,14 @@ class AddOpMaker : public OpProtoAndCheckerMaker {
 namespace f = paddle::framework;
 namespace ops = paddle::operators;
 using EnforceNotMet = paddle::platform::EnforceNotMet;
-REGISTER_OP(rowwise_add, f::NOP, f::RowWiseAddOpMaker, rowwise_add_grad,
-            f::NOP);
-REGISTER_OP(mul, f::NOP, f::MulOpMaker, mul_grad, f::NOP);
-REGISTER_OP(sigmoid, f::NOP, f::SigmoidOpMaker, sigmoid_grad, f::NOP);
+REGISTER_OP(rowwise_add, f::NOP, f::RowWiseAddOpMaker, f::NOP);
+REGISTER_OP(mul, f::NOP, f::MulOpMaker, f::NOP);
+REGISTER_OP(sigmoid, f::NOP, f::SigmoidOpMaker, f::NOP);
 REGISTER_OP_WITHOUT_GRADIENT(nograd, f::NOP, f::NoGradOpMaker);
 REGISTER_OP_WITHOUT_GRADIENT(fill_zeros_like, f::NOP, f::FillZeroOpMaker);
-REGISTER_OP(add, f::NOP, f::AddOpMaker, add_grad, f::NOP);
+REGISTER_OP(add, f::NOP, f::AddOpMaker, f::NOP);
 REGISTER_OP_WITHOUT_GRADIENT(fc, f::FcOp, f::FcOpMaker);
-REGISTER_OP(many_output_op, f::NOP, f::ManyOutputOpMaker, many_output_op_grad,
-            f::NOP);
+REGISTER_OP(many_output_op, f::NOP, f::ManyOutputOpMaker, f::NOP);
 
 TEST(Backward, simple_op_grad) {
   auto fwd = f::OpRegistry::CreateOp(
diff --git a/paddle/framework/grad_op_builder_test.cc b/paddle/framework/grad_op_builder_test.cc
index 902c2655e9..8a817a3e13 100644
--- a/paddle/framework/grad_op_builder_test.cc
+++ b/paddle/framework/grad_op_builder_test.cc
@@ -54,8 +54,8 @@ TEST(GradOpBuilder, AddTwo) {
   EXPECT_EQ(grad_add_op->Output(f::GradVarName("Y")), f::GradVarName("y"));
 }
 
-REGISTER_OP(mult_io, f::NOP, f::MutiInOutOpMaker, mult_io_grad, f::NOP);
-REGISTER_OP(io_ignored, f::NOP, f::IOIgnoredOpMaker, io_ignored_grad, f::NOP);
+REGISTER_OP(mult_io, f::NOP, f::MutiInOutOpMaker, f::NOP);
+REGISTER_OP(io_ignored, f::NOP, f::IOIgnoredOpMaker, f::NOP);
 
 TEST(GradOpBuilder, MutiInOut) {
   std::shared_ptr<f::OperatorBase> test_op(f::OpRegistry::CreateOp(
diff --git a/paddle/framework/op_registry.h b/paddle/framework/op_registry.h
index 2d09cde41e..64c7f23ab6 100644
--- a/paddle/framework/op_registry.h
+++ b/paddle/framework/op_registry.h
@@ -33,8 +33,7 @@ namespace framework {
 class OpRegistry {
  public:
   template <typename OpType, typename ProtoMakerType, typename GradOpType>
-  static void RegisterOp(const std::string& op_type,
-                         const std::string& grad_op_type) {
+  static void RegisterOp(const std::string& op_type) {
     PADDLE_ENFORCE(!OpInfoMap::Instance().Has(op_type),
                    "'%s' is registered more than once.", op_type);
     OpInfo op_info;
@@ -43,9 +42,9 @@ class OpRegistry {
         const VariableNameMap& outputs, const AttributeMap& attrs) {
       return new OpType(type, inputs, outputs, attrs);
     };
-    op_info.grad_op_type_ = grad_op_type;
     if (std::type_index(typeid(ProtoMakerType)) !=
         std::type_index(typeid(NOPMaker))) {
+      op_info.grad_op_type_ = op_type + "_grad";
       op_info.proto_ = new OpProto;
       op_info.checker_ = new OpAttrChecker;
       auto maker = ProtoMakerType(op_info.proto_, op_info.checker_);
@@ -55,15 +54,14 @@ class OpRegistry {
           op_info.proto_->IsInitialized(),
           "Fail to initialize %s's OpProto, because %s is not initialized",
           op_type, op_info.proto_->InitializationErrorString());
+      // register gradient op
+      RegisterOp<GradOpType, NOPMaker, NOP>(op_info.grad_op_type_);
     } else {
+      op_info.grad_op_type_ = "";
       op_info.proto_ = nullptr;
       op_info.checker_ = nullptr;
     }
     OpInfoMap::Instance().Insert(op_type, op_info);
-    // register gradient op
-    if (!grad_op_type.empty()) {
-      RegisterOp<GradOpType, NOPMaker, NOP>(grad_op_type, "");
-    }
   }
 
   static std::unique_ptr<OperatorBase> CreateOp(const std::string& type,
@@ -92,10 +90,8 @@ class Registrar {
 template <typename OpType, typename ProtoMakerType, typename GradOpType>
 class OpRegistrar : public Registrar {
  public:
-  explicit OpRegistrar(const char* op_type) { OpRegistrar(op_type, ""); }
-  OpRegistrar(const char* op_type, const char* grad_op_type) {
-    OpRegistry::RegisterOp<OpType, ProtoMakerType, GradOpType>(op_type,
-                                                               grad_op_type);
+  explicit OpRegistrar(const char* op_type) {
+    OpRegistry::RegisterOp<OpType, ProtoMakerType, GradOpType>(op_type);
   }
 };
 
@@ -121,8 +117,7 @@ class OpKernelRegistrar : public Registrar {
 /**
  * Macro to register Operator.
  */
-#define REGISTER_OP(op_type, op_class, op_maker_class, grad_op_type,          \
-                    grad_op_class)                                            \
+#define REGISTER_OP(op_type, op_class, op_maker_class, grad_op_class)         \
   STATIC_ASSERT_GLOBAL_NAMESPACE(                                             \
       __reg_op__##op_type, "REGISTER_OP must be called in global namespace"); \
   class _OpClass_##op_type##_ : public op_class {                             \
@@ -137,14 +132,14 @@ class OpKernelRegistrar : public Registrar {
   };                                                                          \
   static ::paddle::framework::OpRegistrar<                                    \
       _OpClass_##op_type##_, op_maker_class, _OpGradClass_##op_type##_>       \
-      __op_registrar_##op_type##__(#op_type, #grad_op_type);                  \
+      __op_registrar_##op_type##__(#op_type);                                 \
   int TouchOpRegistrar_##op_type() {                                          \
     __op_registrar_##op_type##__.Touch();                                     \
     return 0;                                                                 \
   }
 
 #define REGISTER_OP_WITHOUT_GRADIENT(op_type, op_class, op_maker_class) \
-  REGISTER_OP(op_type, op_class, op_maker_class, , ::paddle::framework::NOP)
+  REGISTER_OP(op_type, op_class, op_maker_class, ::paddle::framework::NOP)
 
 /**
  * Macro to register OperatorKernel.
diff --git a/paddle/operators/add_op.cc b/paddle/operators/add_op.cc
index 8ab748ed71..6384d8c8ce 100644
--- a/paddle/operators/add_op.cc
+++ b/paddle/operators/add_op.cc
@@ -57,7 +57,7 @@ class AddOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(add_two, ops::AddOp, ops::AddOpMaker, add_two_grad, ops::AddOpGrad);
+REGISTER_OP(add_two, ops::AddOp, ops::AddOpMaker, ops::AddOpGrad);
 
 REGISTER_OP_CPU_KERNEL(add_two,
                        ops::AddKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/cross_entropy_op.cc b/paddle/operators/cross_entropy_op.cc
index ab1e1c101a..ac76326262 100644
--- a/paddle/operators/cross_entropy_op.cc
+++ b/paddle/operators/cross_entropy_op.cc
@@ -67,8 +67,7 @@ OnehotCrossEntropy Operator.
 
 namespace ops = paddle::operators;
 REGISTER_OP(onehot_cross_entropy, ops::OnehotCrossEntropyOp,
-            ops::OnehotCrossEntropyOpMaker, onehot_cross_entropy_grad,
-            ops::OnehotCrossEntropyGradientOp);
+            ops::OnehotCrossEntropyOpMaker, ops::OnehotCrossEntropyGradientOp);
 REGISTER_OP_CPU_KERNEL(onehot_cross_entropy,
                        ops::OnehotCrossEntropyOpKernel<float>);
 REGISTER_OP_CPU_KERNEL(onehot_cross_entropy_grad,
diff --git a/paddle/operators/gather_op.cc b/paddle/operators/gather_op.cc
index 123bed296c..07fa704824 100644
--- a/paddle/operators/gather_op.cc
+++ b/paddle/operators/gather_op.cc
@@ -63,8 +63,7 @@ Out = X[Index]
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(gather, ops::GatherOp, ops::GatherOpMaker, gather_grad,
-            ops::GatherGradOp);
+REGISTER_OP(gather, ops::GatherOp, ops::GatherOpMaker, ops::GatherGradOp);
 REGISTER_OP_CPU_KERNEL(gather,
                        ops::GatherOpKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/lookup_table_op.cc b/paddle/operators/lookup_table_op.cc
index 94d40890a7..c3108ba8ec 100644
--- a/paddle/operators/lookup_table_op.cc
+++ b/paddle/operators/lookup_table_op.cc
@@ -66,7 +66,7 @@ class LookupTableOpGrad : public framework::OperatorWithKernel {
 
 namespace ops = paddle::operators;
 REGISTER_OP(lookup_table, ops::LookupTableOp, ops::LookupTableOpMaker,
-            lookup_table_grad, ops::LookupTableOpGrad);
+            ops::LookupTableOpGrad);
 
 REGISTER_OP_CPU_KERNEL(lookup_table, ops::LookupTableKernel<float>);
 REGISTER_OP_CPU_KERNEL(lookup_table_grad, ops::LookupTableGradKernel<float>);
diff --git a/paddle/operators/mean_op.cc b/paddle/operators/mean_op.cc
index d3d0e55a67..e66e0abb25 100644
--- a/paddle/operators/mean_op.cc
+++ b/paddle/operators/mean_op.cc
@@ -54,7 +54,7 @@ class MeanGradOp : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(mean, ops::MeanOp, ops::MeanOpMaker, mean_grad, ops::MeanGradOp);
+REGISTER_OP(mean, ops::MeanOp, ops::MeanOpMaker, ops::MeanGradOp);
 REGISTER_OP_CPU_KERNEL(mean,
                        ops::MeanKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mean_grad,
diff --git a/paddle/operators/minus_op.cc b/paddle/operators/minus_op.cc
index 1eee9644ba..b4afebcd97 100644
--- a/paddle/operators/minus_op.cc
+++ b/paddle/operators/minus_op.cc
@@ -81,7 +81,6 @@ class MinusGradOp : public NetOp {
 USE_OP(scale);
 USE_OP_ITSELF(identity);
 namespace ops = paddle::operators;
-REGISTER_OP(minus, ops::MinusOp, ops::MinusOpMaker, minus_grad,
-            ops::MinusGradOp<float>);
+REGISTER_OP(minus, ops::MinusOp, ops::MinusOpMaker, ops::MinusGradOp<float>);
 REGISTER_OP_CPU_KERNEL(minus,
                        ops::MinusKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/mul_op.cc b/paddle/operators/mul_op.cc
index 173cc3850c..559d19e6bd 100644
--- a/paddle/operators/mul_op.cc
+++ b/paddle/operators/mul_op.cc
@@ -84,7 +84,7 @@ class MulOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
+REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, ops::MulOpGrad);
 REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mul_grad,
                        ops::MulGradKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/rowwise_add_op.cc b/paddle/operators/rowwise_add_op.cc
index 6825dce332..63de91254f 100644
--- a/paddle/operators/rowwise_add_op.cc
+++ b/paddle/operators/rowwise_add_op.cc
@@ -74,7 +74,7 @@ class RowwiseAddGradOp : public framework::OperatorWithKernel {
 
 namespace ops = paddle::operators;
 REGISTER_OP(rowwise_add, ops::RowwiseAddOp, ops::RowwiseAddOpMaker,
-            rowwise_add_grad, ops::RowwiseAddGradOp);
+            ops::RowwiseAddGradOp);
 REGISTER_OP_CPU_KERNEL(
     rowwise_add, ops::RowwiseAddKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/scale_op.cc b/paddle/operators/scale_op.cc
index 8e96a74c94..4e039688d4 100644
--- a/paddle/operators/scale_op.cc
+++ b/paddle/operators/scale_op.cc
@@ -97,7 +97,7 @@ class IdentityOp : public NetOp {
 
 namespace ops = paddle::operators;
 
-REGISTER_OP(scale, ops::ScaleOp, ops::ScaleOpMaker<float>, scale_grad,
+REGISTER_OP(scale, ops::ScaleOp, ops::ScaleOpMaker<float>,
             ops::ScaleGradOp<float>);
 REGISTER_OP_CPU_KERNEL(scale,
                        ops::ScaleKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/scatter_op.cc b/paddle/operators/scatter_op.cc
index f901edefa2..35c185ad80 100644
--- a/paddle/operators/scatter_op.cc
+++ b/paddle/operators/scatter_op.cc
@@ -77,8 +77,7 @@ Out[Index] = Ref[Index] + Updates
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(scatter, ops::ScatterOp, ops::ScatterOpMaker, scatter_grad,
-            ops::ScatterGradOp);
+REGISTER_OP(scatter, ops::ScatterOp, ops::ScatterOpMaker, ops::ScatterGradOp);
 REGISTER_OP_CPU_KERNEL(scatter,
                        ops::ScatterOpKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/sigmoid_op.cc b/paddle/operators/sigmoid_op.cc
index 761c6de8d4..f35b702384 100644
--- a/paddle/operators/sigmoid_op.cc
+++ b/paddle/operators/sigmoid_op.cc
@@ -53,8 +53,7 @@ class SigmoidOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(sigmoid, ops::SigmoidOp, ops::SigmoidOpMaker, sigmoid_grad,
-            ops::SigmoidOpGrad);
+REGISTER_OP(sigmoid, ops::SigmoidOp, ops::SigmoidOpMaker, ops::SigmoidOpGrad);
 REGISTER_OP_CPU_KERNEL(sigmoid,
                        ops::SigmoidKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/softmax_op.cc b/paddle/operators/softmax_op.cc
index 40c51a64c4..471bb288fb 100644
--- a/paddle/operators/softmax_op.cc
+++ b/paddle/operators/softmax_op.cc
@@ -62,8 +62,7 @@ class SoftmaxOpGrad : public framework::OperatorWithKernel {
 
 namespace ops = paddle::operators;
 
-REGISTER_OP(softmax, ops::SoftmaxOp, ops::SoftmaxOpMaker, softmax_grad,
-            ops::SoftmaxOpGrad);
+REGISTER_OP(softmax, ops::SoftmaxOp, ops::SoftmaxOpMaker, ops::SoftmaxOpGrad);
 REGISTER_OP_CPU_KERNEL(softmax,
                        ops::SoftmaxKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(

From fff380b54e1d8da774e0c183ad206ffbac5f9b4b Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:03:45 -0700
Subject: [PATCH 19/72] Add layers and operators design doc

---
 doc/design/layers_operators.md | 71 ++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 doc/design/layers_operators.md

diff --git a/doc/design/layers_operators.md b/doc/design/layers_operators.md
new file mode 100644
index 0000000000..4cb590c85f
--- /dev/null
+++ b/doc/design/layers_operators.md
@@ -0,0 +1,71 @@
+In a DL system, we can compose one or more fine grained operators into a coarse grained one.  For example, the FC layer can be composed of a multiplication operator and an add operator.
+
+Historically, some fine grained operations are known as operators, and some coarse level ones are known as layers.  But we need a well-defined separation.
+
+In general, operators are those very fine grained operations, e.g., mul and add. In the implementation, we can write them as C++ functions:
+
+```c++
+template <typename T> T add(T x, T y) { return x + y; }
+template <typename T> T mul(T x, T y) { return x * y; }
+```
+
+Then we can wrap them into operators which are C++ classes and can be created from Python bindings by name.  A C macro can do this. For example, the following macro invocation
+
+```c++
+#define MAKE_FUNCTION_OPERATOR(mul);
+```
+
+generates
+
+```c++
+class mulOp : public OperatorBase {...};
+REGISTER_OP(mulOp, "mul");
+```
+
+so that in Python we can create operator mul by:
+
+```python
+X1 = Var()
+X2 = Var()
+Y = Var()
+paddle.cpp.create_operator("mul", input=[X1, X2], output=Y)
+```
+
+Also, at the same time, we can compose a coarse level C++ operator class by composing functions `mul` and `add`:
+
+```c++
+class FCOp : public OperatorBase {
+ public:
+  void Run(...) {
+    add(mul(Input("X"), Input("W")), Input("b");
+  }
+};
+REGISTER_OP(FCOp, "fc");
+```
+
+We need to support such composition in Python as well.  To do so, we need a higher level Python wrapping of operator creation than `paddle.cpp.create_operator`.  This higher level operator API should be compatible with the layer API.
+
+Let's explain using an example.  Suppose that we are going to compose the FC using mul and add in Python, we'd like to have Python functions `mul` and `add` defined in module `operator`:
+
+```python
+def mul(X1, X2):
+    O = Var
+    paddle.cpp.create_operator("mul", input={X1, Y1], output=O)
+    return O
+
+def add(X1, X2):
+    O = Var
+    paddle.cpp.create_operator("add", input={X1, X2], output=O)
+    return O
+```
+
+so that we can define
+
+```python
+def layer.fc(X):
+    W = Var()
+    b = Var()
+    return operator.add(operator.mul(X, W), b)
+```
+
+We'd like to have Python bindings to operators in package `paddle.operator`, and Python compositions of operators in package `paddle.layer`.  This is how we differentiate layer and operators in PaddlePaddle.

From 6aef11baac1ff09b0fc69dd801ba1fe508374c31 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:05:37 -0700
Subject: [PATCH 20/72] Add title

---
 doc/design/layers_operators.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/design/layers_operators.md b/doc/design/layers_operators.md
index 4cb590c85f..83169260c8 100644
--- a/doc/design/layers_operators.md
+++ b/doc/design/layers_operators.md
@@ -1,3 +1,5 @@
+# Design Doc: Layers and Operators
+
 In a DL system, we can compose one or more fine grained operators into a coarse grained one.  For example, the FC layer can be composed of a multiplication operator and an add operator.
 
 Historically, some fine grained operations are known as operators, and some coarse level ones are known as layers.  But we need a well-defined separation.

From 887275efad3e9e7184b17ee6a141196756d8fc07 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:12:24 -0700
Subject: [PATCH 21/72] Add a table

---
 doc/design/layers_operators.md | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/doc/design/layers_operators.md b/doc/design/layers_operators.md
index 83169260c8..ee9e890e5c 100644
--- a/doc/design/layers_operators.md
+++ b/doc/design/layers_operators.md
@@ -50,12 +50,12 @@ We need to support such composition in Python as well.  To do so, we need a high
 Let's explain using an example.  Suppose that we are going to compose the FC using mul and add in Python, we'd like to have Python functions `mul` and `add` defined in module `operator`:
 
 ```python
-def mul(X1, X2):
+def operator.mul(X1, X2):
     O = Var
     paddle.cpp.create_operator("mul", input={X1, Y1], output=O)
     return O
 
-def add(X1, X2):
+def operator.add(X1, X2):
     O = Var
     paddle.cpp.create_operator("add", input={X1, X2], output=O)
     return O
@@ -70,4 +70,14 @@ def layer.fc(X):
     return operator.add(operator.mul(X, W), b)
 ```
 
-We'd like to have Python bindings to operators in package `paddle.operator`, and Python compositions of operators in package `paddle.layer`.  This is how we differentiate layer and operators in PaddlePaddle.
+We'd like to have Python bindings to operators in package `paddle.operator`, and Python compositions of operators in package `paddle.layer`.  So we have the following concepts in above illustrative example:
+
+| C++ functions/functors | mul          | add          |             |          |
+| C++ operator class     | mulOp        | addOp        | FCOp        |          |
+| Python binding         | operator.mul | operator.add | operator.fc |          |
+| Python function        |              |              |             | layer.fc |
+
+This is how we differentiate layer and operators in PaddlePaddle:
+
+- those defined in C++ and have a lightweighted Python wrapper in module `operators` are operators; whereas
+- those who don't have C++ implementations but a Python implementation that compose C++ operators are known as layers.

From 7159062873bc097e9a9951eb009e5f625b23b4a9 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:13:37 -0700
Subject: [PATCH 22/72] Add table header

---
 doc/design/layers_operators.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/design/layers_operators.md b/doc/design/layers_operators.md
index ee9e890e5c..cda99888be 100644
--- a/doc/design/layers_operators.md
+++ b/doc/design/layers_operators.md
@@ -72,6 +72,8 @@ def layer.fc(X):
 
 We'd like to have Python bindings to operators in package `paddle.operator`, and Python compositions of operators in package `paddle.layer`.  So we have the following concepts in above illustrative example:
 
+| implementation         | mul          | add          | fc          | fc       |
+---------------------------------------------------------------------------------
 | C++ functions/functors | mul          | add          |             |          |
 | C++ operator class     | mulOp        | addOp        | FCOp        |          |
 | Python binding         | operator.mul | operator.add | operator.fc |          |

From 90a442825c42740173ecf5ee3e64c24756bcfd56 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:14:51 -0700
Subject: [PATCH 23/72] Change table to verbatim

---
 doc/design/layers_operators.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/design/layers_operators.md b/doc/design/layers_operators.md
index cda99888be..131effbccf 100644
--- a/doc/design/layers_operators.md
+++ b/doc/design/layers_operators.md
@@ -72,12 +72,12 @@ def layer.fc(X):
 
 We'd like to have Python bindings to operators in package `paddle.operator`, and Python compositions of operators in package `paddle.layer`.  So we have the following concepts in above illustrative example:
 
-| implementation         | mul          | add          | fc          | fc       |
----------------------------------------------------------------------------------
+```
 | C++ functions/functors | mul          | add          |             |          |
 | C++ operator class     | mulOp        | addOp        | FCOp        |          |
 | Python binding         | operator.mul | operator.add | operator.fc |          |
 | Python function        |              |              |             | layer.fc |
+```
 
 This is how we differentiate layer and operators in PaddlePaddle:
 

From 1f713f6822b96ccaff5684e547dac32590047d85 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:25:05 -0700
Subject: [PATCH 24/72] in response to comments from Jia-Yi

---
 doc/design/layers_operators.md | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/doc/design/layers_operators.md b/doc/design/layers_operators.md
index 131effbccf..e4f8d303e8 100644
--- a/doc/design/layers_operators.md
+++ b/doc/design/layers_operators.md
@@ -1,4 +1,4 @@
-# Design Doc: Layers and Operators
+# Design Doc: Functions, Operators, and Layers
 
 In a DL system, we can compose one or more fine grained operators into a coarse grained one.  For example, the FC layer can be composed of a multiplication operator and an add operator.
 
@@ -20,8 +20,8 @@ Then we can wrap them into operators which are C++ classes and can be created fr
 generates
 
 ```c++
-class mulOp : public OperatorBase {...};
-REGISTER_OP(mulOp, "mul");
+template <typename T> class mulOp : public OperatorBase {...};
+REGISTER_OP(mulOp<float32>, "mul");
 ```
 
 so that in Python we can create operator mul by:
@@ -36,12 +36,13 @@ paddle.cpp.create_operator("mul", input=[X1, X2], output=Y)
 Also, at the same time, we can compose a coarse level C++ operator class by composing functions `mul` and `add`:
 
 ```c++
+template <typename T>
 class FCOp : public OperatorBase {
  public:
   void Run(...) {
-    add(mul(Input("X"), Input("W")), Input("b");
+    add(mul(Input<T>("X"), Input<T>("W")), Input<T>("b");
   }
-};
+};d
 REGISTER_OP(FCOp, "fc");
 ```
 

From 305aebc005c4083ee3733688fc1ed23b5e1a8232 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:26:44 -0700
Subject: [PATCH 25/72] Rename file according to title

---
 doc/design/{layers_operators.md => functions_operators_layers.md} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename doc/design/{layers_operators.md => functions_operators_layers.md} (100%)

diff --git a/doc/design/layers_operators.md b/doc/design/functions_operators_layers.md
similarity index 100%
rename from doc/design/layers_operators.md
rename to doc/design/functions_operators_layers.md

From 2b3904a6a8c568f8bf20155f8f87a33c9f4e67b9 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Sat, 2 Sep 2017 17:34:10 -0700
Subject: [PATCH 26/72] Explain auto code generation

---
 doc/design/functions_operators_layers.md | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/doc/design/functions_operators_layers.md b/doc/design/functions_operators_layers.md
index e4f8d303e8..7a2e8fd0ac 100644
--- a/doc/design/functions_operators_layers.md
+++ b/doc/design/functions_operators_layers.md
@@ -42,7 +42,7 @@ class FCOp : public OperatorBase {
   void Run(...) {
     add(mul(Input<T>("X"), Input<T>("W")), Input<T>("b");
   }
-};d
+};
 REGISTER_OP(FCOp, "fc");
 ```
 
@@ -52,17 +52,17 @@ Let's explain using an example.  Suppose that we are going to compose the FC usi
 
 ```python
 def operator.mul(X1, X2):
-    O = Var
+    O = Var()
     paddle.cpp.create_operator("mul", input={X1, Y1], output=O)
     return O
 
 def operator.add(X1, X2):
-    O = Var
+    O = Var()
     paddle.cpp.create_operator("add", input={X1, X2], output=O)
     return O
 ```
 
-so that we can define
+Above code snippets are automatically generated.  Given them, users can define
 
 ```python
 def layer.fc(X):
@@ -71,6 +71,19 @@ def layer.fc(X):
     return operator.add(operator.mul(X, W), b)
 ```
 
+If we don't have `operator.mul` and `operator.add`, the definiton of `layer.fc` would be complicated:
+
+```python
+def layer.fc(X):
+    W = Var()
+    b = Var()
+    O1 = Var()
+    paddle.cpp.create_operator("mul", input=[X, W], output=O1)
+    O2 = Var()
+    paddle.cpp.create_operator("add", input=[O1, b], output=O2)
+    return O2
+```
+
 We'd like to have Python bindings to operators in package `paddle.operator`, and Python compositions of operators in package `paddle.layer`.  So we have the following concepts in above illustrative example:
 
 ```

From d156dfa93bd39beeb3f79422ae60e3ebdc5ac1c8 Mon Sep 17 00:00:00 2001
From: zchen0211 <chenzhuoyuan07@gmail.com>
Date: Sun, 3 Sep 2017 00:42:10 +0000
Subject: [PATCH 27/72] if else design doc

---
 doc/design/if_else_op.md      |  54 +++++++++++++
 paddle/operators/switch_op.cc | 120 ----------------------------
 paddle/operators/switch_op.h  | 143 ----------------------------------
 3 files changed, 54 insertions(+), 263 deletions(-)
 create mode 100644 doc/design/if_else_op.md
 delete mode 100644 paddle/operators/switch_op.cc
 delete mode 100644 paddle/operators/switch_op.h

diff --git a/doc/design/if_else_op.md b/doc/design/if_else_op.md
new file mode 100644
index 0000000000..79bb543de1
--- /dev/null
+++ b/doc/design/if_else_op.md
@@ -0,0 +1,54 @@
+In an if_op, only inputs with condition satisfied will be run. The op could have multiple inputs and multiple outputs.
+We should have the following design:
+
+```python
+# A 1-d bool vector
+cond = Var()
+# create an op
+if = pd.if_op()
+
+with if.true_block() as block:
+  x1 = if.input(x1)
+  x2 = if.input(x2)
+  y = pd.add(x1, x2)
+  y2 = pd.fc(x1) # contains (w,b)
+  if.output(y)
+  if.output(y2)
+  
+o1, o2 = if(cond)
+```
+
+In an if_op, only inputs with condition satisfied will be run.
+We should have the following design:
+```python
+# A 1-d bool vector
+cond = Var()
+# create an op
+if = pd.if_op()
+
+with if.true_block() as block:
+  x1 = if.input(x1)
+  x2 = if.input(x2)
+  y = pd.add(x1, x2)
+  y2 = pd.fc(x1) # contains (w,b)
+  if.output(y, name="y")
+  if.output(y2, name="y2")
+
+with if.false_block() as block:
+  x1 = if.input(x1)
+  x2 = if.input(x2)
+  y = pd.fc(x2)
+  y2 = pd.softmax(x1) 
+  if.output(y, name="y")
+  if.output(y2, name="y2")
+  
+o1, o2 = if(cond)
+```
+
+Some questions:
+ 1. how to know which inputs will be selected by condition?
+ e.g. True_block():
+  y = pd.fc(x)
+  # we will have x, w, b all as inputs
+  # but only x will be selected by cond, how can the block know?
+
diff --git a/paddle/operators/switch_op.cc b/paddle/operators/switch_op.cc
deleted file mode 100644
index 09574a89a3..0000000000
--- a/paddle/operators/switch_op.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-#include "paddle/operators/switch_op.h"
-
-namespace paddle {
-namespace operators {
-
-// namespace if_else{
-
-
-void CondOp::Init() override {
-}
-
-void InferShape(const std::shared_ptr<Scope>& scope) const override {
-  subnet_t = GetAttr<std::string>("subnet_t");
-  subnet_f = GetAttr<std::string>("subnet_f");
-
-  // Create two Nets
-  // I use the same style as Recurrent_op, but does it create the net?
-  // can be called like
-  Variable* net_t = scope.FindVar(subnet_t);
-  Variable* net_f = scope.FindVar(subnet_f);
-
-  net_op_t = scope.FindVar(net_t)->GetMutable<NetOp>();
-  net_op_f = scope.FindVar(net_f)->GetMutable<NetOp>();
-
-  // Create two scopes
-  scope_t = scope.NewScope();
-  scope_f = scope.NewScope();
-
-  // check cond of size (batch_size), type bool
-  net_op_t->InferShape(scope_t);
-  net_op_f->InferShape(scope_f);
-
-  // check net_op_t and net_op_f of exactly same shape?
-}
-
-void IfElseOp::Run(const std::shared_ptr<Scope>& scope,
-                   const platform::DeviceContext& dev_ctx) const {
-  /* step 1: create two subnets and scopes, supposed done in Infershape() */
-
-  /* step 2: get true and false index */
-  cond = Input(name.cond);
-  // get condition tensor
-  auto cond_tensor = scope.get<Tensor>(cond);
-  // tensor to cpu, whatever device it used to be in
-  cond_cpu.CopyFrom(cond_tensor, platform::CPUPlace());
-
-  size_t batch_size = cond_cpu.dims()[0];
-
-  // keep index of true and false to slice, clear them first before each batch
-  true_index.clear();
-  false_index.clear();
-  	
-  // get a DDim type variable dims, check dimension
-  auto dims = input0.dims();
-  for(int i=0; i<dims; i++) {
-    if (cond_cpu->data[i])
-      true_index.push_back(i);
-    else
-      false_index.push_back(i);
-  }
-
-  // turn true_index and false_index to tensors
-  Tensor* true_index_tensor = new Tensor(true_index);
-  Tensor* false_index_tensor = new Tensor(false_index);
-
-  /* Step 3: Gather */
-  { // True Scope
-    // Create new stuff
-    for (auto& input : net_op_t->inputs_) {
-      scope_t.NewVar(input);
-      if (input.type() != PARAMETER) { // gather and slice required
-        // Get Tensor and gather
-        Tensor* input_gather_ = scope_t.FindVar(input)->GetMutable<Tensor>();
-        Tensor* input_full_ = scope.FindVar(input)->GetMutable<Tensor>();
-        input_gather_ = Gather(input_full_, true_index_tensor);
-      }
-    }
-
-    for (auto& output : net_op->outputs_) {
-      scope_t.NewVar(output);
-    }
-      
-    net_op_t.Run();
-  }
-
-  { // False Scope
-    // Create new stuff
-    for (auto& input : net_op_f->inputs_) {
-      scope_f.NewVar(input);
-      if (input.type() != PARAMETER) { // gather and slice required
-        // Get Tensor and gather
-        Tensor* input_gather_ = scope_f.FindVar(input)->GetMutable<Tensor>();
-        Tensor* input_full_ = scope.FindVar(input)->GetMutable<Tensor>();
-        input_gather_ = Gather(input_full_, false_index_tensor);
-      }
-    }
-
-    for (auto& output : net_op->outputs_) {
-      scope_t.NewVar(output);
-    }
-
-    net_op_f.Run();
-  }
-
-  /* Merge Output Together by scatter update */
-  for (auto& ouput : outputs_) {
-    Tensor* output_t = scope_t->FindVar(output)->GetMutable<Tensor>();
-    Tensor* output_f = scope_f->FindVar(output)->GetMutable<Tensor>();
-    Tensor* output_tensor = scope->FindVar(output)->GetMutable<Tensor>();
-    Scatter(output_t, output_tensor, true_index_tensor);
-    Scatter(output_f, output_tensor, false_index_tensor);
-  }
-}
-
-}  // namespace operators
-}  // namespace paddle
-
-REGISTER_OP(ifelse_op,
-            paddle::operators::IfElseOp,
-            paddle::operators::RecurrentAlgorithmProtoAndCheckerMaker);
diff --git a/paddle/operators/switch_op.h b/paddle/operators/switch_op.h
deleted file mode 100644
index f72726bce1..0000000000
--- a/paddle/operators/switch_op.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License. */
-
-#pragma once
-#include "glog/logging.h"
-#include "paddle/framework/eigen.h"
-#include "paddle/framework/operator.h"
-#include "paddle/framework/ddim.h"
-#include "paddle/operators/gather.h"
-
-namespace paddle {
-namespace operators {
-
-using namespace paddle::framework;
-
-template <typename Place, typename T>
-class CondOp final : public OperatorBase {
-public:
-  void Init() override;
-
-  /**
-   * InferShape must be called before Run.
-   */
-  virtual void InferShape(const std::shared_ptr<Scope>& scope) const override {
-    scope_t = scope.NewScope();
-    scope_f = scope.NewScope();
-    net_op_t->InferShape(scope_t);
-    net_op_f->InferShape(scope_f);
-    tensor_t = new Tensor();
-    tensor_f = new Tensor();
-    { // True branch
-      for (auto& input : net_op_t->Inputs()) {
-        auto var_name = input.second;
-        if (!scope_t.FindVar(var_name) {
-          scope_t.NewVar(var_name)->GetMutable<Tensor>();
-        }
-      }
-    }
-    { // False branch
-      for (auto& input : net_op_f->Inputs()) {
-        auto var_name = input.second;
-        if (!scope_f.FindVar(var_name) {
-          scope_f.NewVar(var_name)->GetMutable<Tensor>();
-        }
-      }
-    }
-  }
-
-  virtual void Run(const std::shared_ptr<Scope>& scope,
-                   const platform::DeviceContext& dev_ctx) const override {
-    auto* cond = context.Input<Tensor>("Cond");
-    // Step 1: get the index
-    true_index.clear();
-    false_index.clear();
-    for(int i = 0; i < cond->dims()[0]; ++i) {
-      if (cond->data<bool>()[i])
-        true_index.push_back(i);
-      else:
-        false_index.push_back(i);
-    }
-    framework::DDim dim_ = paddle::framework::make_ddim({0});
-    dim_[0] = true_index.size();
-    tensor_t->Resize(dim_);
-    // set value
-    for (int i = 0; i < dim_[0]; ++i)
-      tensor_t->mutable_data<int>()[i] = true_index[i];
-    dim_[0] = false_index.size();
-    tensor_f->Resize(dim_);
-    // set value
-    for (int i = 0; i < dim_[0]; ++i)
-      tensor_f->mutable_data<int>()[i] = false_index[i];
-    
-    // Step 2: collect data by calling gather
-    { // True branch
-      for (auto& input : net_op_t->Inputs()) {
-        auto var_name = input.second;
-        // find Tensor
-        Tensor* Tensor_parent = scope.FindVar(var_name)->GetMutable<Tensor>();
-        Tensor* Tensor_child = scope_t.FindVar(var_name)->GetMutable<Tensor>();
-        Gather<T>(dev_ctx.GetPlace(), tensor_parent, tensor_t, tensor_child); 
-      }
-      
-    }
-  }
-
-private:
-  Scope* scope_t;
-  Scope* scope_f;
-
-  // subnet_t
-  std::unique_ptr<framework::OperatorBase> net_op_t;
-  // NetOp* net_op_t;
-  // subnet_f
-  std::unique_ptr<framework::OperatorBase> net_op_f;
-  // NetOp* net_op_f;
-
-  // T_index
-  vector<int> true_index;
-  Tensor* tensor_t;
-  // F_index
-  vector<int> false_index;
-  Tensor* tensor_f;
-};
-
-class CondOpMaker : public OpProtoAndCheckerMaker {
-public:
-  IfElseOpMaker(OpProto *proto, OpAttrChecker *op_checker)
-      : OpProtoAndCheckerMaker(proto, op_checker) {
-    AddInput("Cond", "The condition, which is a bool vector");
-    AddAttr<std::string>("subnet_t", "The subnet network to be called when Cond[i] == true");
-    AddAttr<std::string>("subnet_f", "The subnet network to be called when Cond[i] == false");
-    AddOutput("Out", "The output of if-else op");
-    AddComment(R"DOC(
-Sample dependent Cond Operator:
-The equation is: Out[i] = subnet_t[i], if Cond[i] == true
-Out[i] = subnet_t[i], if Cond[i] == false
-)DOC");
-  }
-};
-
-class CondGradientOp final : public OperatorBase {
-public:
-	void Init() override;
-
-	virtual void InferShape(const std::shared_ptr<Scope>& scope) const override;
-
-	virtual void Run(const std::shared_ptr<Scope>& scope,
-                   const platform::DeviceContext& dev_ctx) const override;
-};
-
-}  // namespace operators
-}  // namespace paddle

From e39a2c9f22610385b1ed680c6e015e10e9bef241 Mon Sep 17 00:00:00 2001
From: Zhuoyuan <chenzhuoyuan07@gmail.com>
Date: Sat, 2 Sep 2017 17:43:30 -0700
Subject: [PATCH 28/72] update if else

---
 doc/design/if_else_op.md | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/design/if_else_op.md b/doc/design/if_else_op.md
index 79bb543de1..cd66bfabf2 100644
--- a/doc/design/if_else_op.md
+++ b/doc/design/if_else_op.md
@@ -47,8 +47,9 @@ o1, o2 = if(cond)
 
 Some questions:
  1. how to know which inputs will be selected by condition?
- e.g. True_block():
+ ```python
+ True_block():
   y = pd.fc(x)
   # we will have x, w, b all as inputs
   # but only x will be selected by cond, how can the block know?
-
+```

From fd8df0806dd07af4fed9ae40ffe5ec571639d2c4 Mon Sep 17 00:00:00 2001
From: Yu Yang <yuyang18@baidu.com>
Date: Sat, 2 Sep 2017 20:37:48 -0700
Subject: [PATCH 29/72] Make operator Input/Output can return nullptr

---
 paddle/framework/operator.cc | 32 +++++++++++++++--------
 paddle/framework/operator.h  | 50 ++++++++++++++++++++----------------
 2 files changed, 50 insertions(+), 32 deletions(-)

diff --git a/paddle/framework/operator.cc b/paddle/framework/operator.cc
index 7abbde610f..4d32795884 100644
--- a/paddle/framework/operator.cc
+++ b/paddle/framework/operator.cc
@@ -33,12 +33,18 @@ ExecutionContext::GetEigenDevice<platform::GPUPlace, Eigen::GpuDevice>() const {
 }
 #endif
 
-const std::string& OperatorBase::Input(const std::string& name) const {
+std::string OperatorBase::Input(const std::string& name) const {
   auto& ins = Inputs(name);
-  PADDLE_ENFORCE_EQ(ins.size(), 1UL,
-                    "Op %s input %s should contain only one variable", type_,
-                    name);
-  return ins[0];
+  switch (ins.size()) {
+    case 0:
+      return kEmptyVarName;
+    case 1:
+      return ins[0];
+    default:
+      PADDLE_THROW("Op %s input %s should contain only one variable", type_,
+                   name);
+      return "";
+  }
 }
 
 const std::vector<std::string>& OperatorBase::Inputs(
@@ -49,12 +55,18 @@ const std::vector<std::string>& OperatorBase::Inputs(
   return it->second;
 }
 
-const std::string& OperatorBase::Output(const std::string& name) const {
+std::string OperatorBase::Output(const std::string& name) const {
   auto& outs = Outputs(name);
-  PADDLE_ENFORCE_EQ(outs.size(), 1UL,
-                    "Op %s output %s should contain only one variable", type_,
-                    name);
-  return outs[0];
+  switch (outs.size()) {
+    case 0:
+      return kEmptyVarName;
+    case 1:
+      return outs[0];
+    default:
+      PADDLE_THROW("Op %s output %s should contain only one variable", type_,
+                   name);
+      return "";
+  }
 }
 
 const std::vector<std::string>& OperatorBase::Outputs(
diff --git a/paddle/framework/operator.h b/paddle/framework/operator.h
index 8397570d26..7759473ef3 100644
--- a/paddle/framework/operator.h
+++ b/paddle/framework/operator.h
@@ -95,12 +95,12 @@ class OperatorBase {
   const VariableNameMap& Inputs() const { return inputs_; }
   const VariableNameMap& Outputs() const { return outputs_; }
   //! Get a input with argument's name described in `op_proto`
-  const std::string& Input(const std::string& name) const;
+  std::string Input(const std::string& name) const;
   //! Get a input which has multiple variables.
   const std::vector<std::string>& Inputs(const std::string& name) const;
 
   //! Get a output with argument's name described in `op_proto`
-  const std::string& Output(const std::string& name) const;
+  std::string Output(const std::string& name) const;
   //! Get an output which has multiple variables.
   //! TODO add a vector_view to prevent memory copy.
   const std::vector<std::string>& Outputs(const std::string& name) const;
@@ -238,11 +238,21 @@ class InferShapeContext {
   }
 
   const Variable* InputVar(const std::string& name) const {
-    return scope_.FindVar(op_.Input(name));
+    auto ipt = op_.Input(name);
+    if (ipt == kEmptyVarName) {
+      return nullptr;
+    } else {
+      return scope_.FindVar(ipt);
+    }
   }
 
   Variable* OutputVar(const std::string& name) const {
-    return scope_.FindVar(op_.Output(name));
+    auto opt = op_.Output(name);
+    if (opt == kEmptyVarName) {
+      return nullptr;
+    } else {
+      return scope_.FindVar(opt);
+    }
   }
 
   const std::vector<const Variable*> MultiInputVar(
@@ -250,9 +260,11 @@ class InferShapeContext {
     auto names = op_.Inputs(name);
     std::vector<const Variable*> res;
     res.reserve(names.size());
-    std::transform(
-        names.begin(), names.end(), std::back_inserter(res),
-        [this](const std::string& name) { return scope_.FindVar(name); });
+    std::transform(names.begin(), names.end(), std::back_inserter(res),
+                   [this](const std::string& name) {
+                     return name != kEmptyVarName ? scope_.FindVar(name)
+                                                  : nullptr;
+                   });
     return res;
   }
 
@@ -260,24 +272,24 @@ class InferShapeContext {
     auto names = op_.Outputs(name);
     std::vector<const Variable*> res;
     res.reserve(names.size());
-    std::transform(
-        names.begin(), names.end(), std::back_inserter(res),
-        [this](const std::string& name) { return scope_.FindVar(name); });
+    std::transform(names.begin(), names.end(), std::back_inserter(res),
+                   [this](const std::string& name) {
+                     return name != kEmptyVarName ? scope_.FindVar(name)
+                                                  : nullptr;
+                   });
     return res;
   }
 
   template <typename T>
   const T* Input(const std::string& name) const {
     auto* var = InputVar(name);
-    PADDLE_ENFORCE_NOT_NULL(var, "Input(%s) should not be nullptr", name);
-    return &var->Get<T>();
+    return var == nullptr ? nullptr : &var->Get<T>();
   }
 
   template <typename T>
   T* Output(const std::string& name) const {
     auto var = OutputVar(name);
-    PADDLE_ENFORCE_NOT_NULL(var, "Output(%s) should not be nullptr", name);
-    return var->GetMutable<T>();
+    return var == nullptr ? nullptr : var->GetMutable<T>();
   }
 
   template <typename T>
@@ -288,10 +300,7 @@ class InferShapeContext {
     std::transform(names.begin(), names.end(), std::back_inserter(res),
                    [&](const std::string& sub_name) {
                      auto var = scope_.FindVar(sub_name);
-                     PADDLE_ENFORCE_NOT_NULL(
-                         var, "MultiInput(%s:%s) should not be nullptr", name,
-                         sub_name);
-                     return &var->Get<T>();
+                     return var == nullptr ? nullptr : &var->Get<T>();
                    });
     return res;
   }
@@ -304,10 +313,7 @@ class InferShapeContext {
     std::transform(names.begin(), names.end(), std::back_inserter(res),
                    [&](const std::string& sub_name) {
                      auto var = scope_.FindVar(sub_name);
-                     PADDLE_ENFORCE_NOT_NULL(
-                         var, "MultiOutput(%s:%s) should not be nullptr.", name,
-                         sub_name);
-                     return var->GetMutable<T>();
+                     return var == nullptr ? nullptr : var->GetMutable<T>();
                    });
     return res;
   }

From 879866cc565ed5e2fe76e92bcb2268c6916f7ffd Mon Sep 17 00:00:00 2001
From: Zhuo Zhang <lispc@qq.com>
Date: Sun, 3 Sep 2017 15:57:14 +0800
Subject: [PATCH 30/72] add PyDataProvider2.InputType pretty print function

---
 python/paddle/trainer/PyDataProvider2.py | 35 ++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/python/paddle/trainer/PyDataProvider2.py b/python/paddle/trainer/PyDataProvider2.py
index 7e305e2cd9..033c71cf8f 100644
--- a/python/paddle/trainer/PyDataProvider2.py
+++ b/python/paddle/trainer/PyDataProvider2.py
@@ -27,6 +27,14 @@ class SequenceType(object):
     SEQUENCE = 1
     SUB_SEQUENCE = 2
 
+    @classmethod
+    def tostring(cls, value):
+        for k in cls.__dict__:
+            if not k.startswith('__'):
+                if getattr(cls, k) == value:
+                    return cls.__name__ + '.' + k
+        return 'INVALID(' + str(value) + ')'
+
 
 # TODO(yuyang18): Add string data type here.
 class DataType(object):
@@ -35,6 +43,14 @@ class DataType(object):
     SparseValue = 2
     Index = 3
 
+    @classmethod
+    def tostring(cls, value):
+        for k in cls.__dict__:
+            if not k.startswith('__'):
+                if getattr(cls, k) == value:
+                    return cls.__name__ + '.' + k
+        return 'INVALID(' + str(value) + ')'
+
 
 class CacheType(object):
     NO_CACHE = 0  # No cache at all
@@ -69,6 +85,25 @@ class InputType(object):
         self.seq_type = seq_type
         self.type = tp
 
+    def __repr__(self):
+        """
+        Return a human readable representation like 'InputType(dim=25921, seq_type=SequenceType.NO_SEQUENCE, type=DataType.Dense)'
+        """
+        repr_str = type(self).__name__
+        repr_str += '('
+        serialize_func_map = {
+            'dim': repr,
+            'seq_type': SequenceType.tostring,
+            'type': DataType.tostring
+        }
+        for idx, k in enumerate(self.__slots__):
+            if idx != 0:
+                repr_str += ', '
+            repr_str += (
+                k + '=' + serialize_func_map.get(k, repr)(getattr(self, k)))
+        repr_str += ')'
+        return repr_str
+
 
 def dense_slot(dim, seq_type=SequenceType.NO_SEQUENCE):
     """

From d7a1e40e10bbe9778916c61755ae04592ebb19b7 Mon Sep 17 00:00:00 2001
From: Yu Yang <yuyang18@baidu.com>
Date: Sun, 3 Sep 2017 11:02:47 -0700
Subject: [PATCH 31/72] Simple Implementation

---
 paddle/framework/operator.cc | 28 ++++++++--------------------
 paddle/framework/operator.h  | 20 ++++++--------------
 2 files changed, 14 insertions(+), 34 deletions(-)

diff --git a/paddle/framework/operator.cc b/paddle/framework/operator.cc
index 4d32795884..68fb469b56 100644
--- a/paddle/framework/operator.cc
+++ b/paddle/framework/operator.cc
@@ -35,16 +35,10 @@ ExecutionContext::GetEigenDevice<platform::GPUPlace, Eigen::GpuDevice>() const {
 
 std::string OperatorBase::Input(const std::string& name) const {
   auto& ins = Inputs(name);
-  switch (ins.size()) {
-    case 0:
-      return kEmptyVarName;
-    case 1:
-      return ins[0];
-    default:
-      PADDLE_THROW("Op %s input %s should contain only one variable", type_,
-                   name);
-      return "";
-  }
+  PADDLE_ENFORCE_LE(ins.size(), 1UL,
+                    "Op %s input %s should contain only one variable", type_,
+                    name);
+  return ins.empty() ? kEmptyVarName : ins[0];
 }
 
 const std::vector<std::string>& OperatorBase::Inputs(
@@ -57,16 +51,10 @@ const std::vector<std::string>& OperatorBase::Inputs(
 
 std::string OperatorBase::Output(const std::string& name) const {
   auto& outs = Outputs(name);
-  switch (outs.size()) {
-    case 0:
-      return kEmptyVarName;
-    case 1:
-      return outs[0];
-    default:
-      PADDLE_THROW("Op %s output %s should contain only one variable", type_,
-                   name);
-      return "";
-  }
+  PADDLE_ENFORCE_LE(outs.size(), 1UL,
+                    "Op %s output %s should contain only one variable", type_,
+                    name);
+  return outs.empty() ? kEmptyVarName : outs[0];
 }
 
 const std::vector<std::string>& OperatorBase::Outputs(
diff --git a/paddle/framework/operator.h b/paddle/framework/operator.h
index 7759473ef3..60ca8b279e 100644
--- a/paddle/framework/operator.h
+++ b/paddle/framework/operator.h
@@ -239,20 +239,12 @@ class InferShapeContext {
 
   const Variable* InputVar(const std::string& name) const {
     auto ipt = op_.Input(name);
-    if (ipt == kEmptyVarName) {
-      return nullptr;
-    } else {
-      return scope_.FindVar(ipt);
-    }
+    return ipt == kEmptyVarName ? nullptr : scope_.FindVar(ipt);
   }
 
   Variable* OutputVar(const std::string& name) const {
     auto opt = op_.Output(name);
-    if (opt == kEmptyVarName) {
-      return nullptr;
-    } else {
-      return scope_.FindVar(opt);
-    }
+    return opt == kEmptyVarName ? nullptr : scope_.FindVar(opt);
   }
 
   const std::vector<const Variable*> MultiInputVar(
@@ -262,8 +254,8 @@ class InferShapeContext {
     res.reserve(names.size());
     std::transform(names.begin(), names.end(), std::back_inserter(res),
                    [this](const std::string& name) {
-                     return name != kEmptyVarName ? scope_.FindVar(name)
-                                                  : nullptr;
+                     return name == kEmptyVarName ? nullptr
+                                                  : scope_.FindVar(name);
                    });
     return res;
   }
@@ -274,8 +266,8 @@ class InferShapeContext {
     res.reserve(names.size());
     std::transform(names.begin(), names.end(), std::back_inserter(res),
                    [this](const std::string& name) {
-                     return name != kEmptyVarName ? scope_.FindVar(name)
-                                                  : nullptr;
+                     return name == kEmptyVarName ? nullptr
+                                                  : scope_.FindVar(name);
                    });
     return res;
   }

From 32244b528b75889d4bee4b5291c9d85f40978700 Mon Sep 17 00:00:00 2001
From: zchen0211 <chenzhuoyuan07@gmail.com>
Date: Sun, 3 Sep 2017 11:11:40 -0700
Subject: [PATCH 32/72] if else modified

---
 doc/design/if_else_op.md | 98 +++++++++++++++++++++-------------------
 1 file changed, 52 insertions(+), 46 deletions(-)

diff --git a/doc/design/if_else_op.md b/doc/design/if_else_op.md
index 79bb543de1..2e2fbe99ad 100644
--- a/doc/design/if_else_op.md
+++ b/doc/design/if_else_op.md
@@ -1,54 +1,60 @@
-In an if_op, only inputs with condition satisfied will be run. The op could have multiple inputs and multiple outputs.
-We should have the following design:
+IfOp should have only one branch. An IfOp operator takes a `cond` variable whose value must be a vector of N boolean elements. Its return value has M (M<=N) instances, each corresponds to a true element in `cond`.
 
 ```python
-# A 1-d bool vector
-cond = Var()
-# create an op
-if = pd.if_op()
-
-with if.true_block() as block:
-  x1 = if.input(x1)
-  x2 = if.input(x2)
-  y = pd.add(x1, x2)
-  y2 = pd.fc(x1) # contains (w,b)
-  if.output(y)
-  if.output(y2)
-  
-o1, o2 = if(cond)
+import paddle as pd
+
+x = var()
+y = var()
+cond = var()
+
+b = pd.create_ifop_builder(inputs=[x], output_num=1)
+with b.true_block():
+    x = b.inputs(0)
+    z = operator.add(x, y)
+    b.set_output(0, operator.softmax(z))
+
+out = b(cond)
 ```
 
-In an if_op, only inputs with condition satisfied will be run.
-We should have the following design:
+If we want the output still has N instances, we can use IfElseOp with a default value, whose minibatch size must be N:
+
 ```python
-# A 1-d bool vector
-cond = Var()
-# create an op
-if = pd.if_op()
-
-with if.true_block() as block:
-  x1 = if.input(x1)
-  x2 = if.input(x2)
-  y = pd.add(x1, x2)
-  y2 = pd.fc(x1) # contains (w,b)
-  if.output(y, name="y")
-  if.output(y2, name="y2")
-
-with if.false_block() as block:
-  x1 = if.input(x1)
-  x2 = if.input(x2)
-  y = pd.fc(x2)
-  y2 = pd.softmax(x1) 
-  if.output(y, name="y")
-  if.output(y2, name="y2")
-  
-o1, o2 = if(cond)
+import paddle as pd
+
+x = var()
+y = var()
+cond = var()
+default_value = var()
+b = pd.create_ifelseop_builder(inputs=[x], output_num=1)
+with b.true_block():
+    x = b.inputs(0)
+    z = operator.add(x, y)
+    b.set_output(0, operator.softmax(z))
+
+with b.false_block():
+    x = b.inputs(0)
+    z = layer.fc(x)
+    b.set_output(0, operator.softmax(z))
+
+out = b(cond)
 ```
 
-Some questions:
- 1. how to know which inputs will be selected by condition?
- e.g. True_block():
-  y = pd.fc(x)
-  # we will have x, w, b all as inputs
-  # but only x will be selected by cond, how can the block know?
+If only true_block is set in an IfElseOp, we can have a default value for false as:
+```python
+import paddle as pd
+
+x = var()
+y = var()
+cond = var()
+default_value = var()
+b = pd.create_ifelseop_builder(inputs=[x], output_num=1, default_value)
+
+with b.true_block():
+    x = b.inputs(0)
+    z = operator.add(x, y)
+    b.set_output(0, operator.softmax(z))
+
+out = b(cond)
+```
+where default_value is a list of vars for `cond` == False.
 

From d323831a0bee005a5f58d13d2691eaa338cc6d38 Mon Sep 17 00:00:00 2001
From: qiaolongfei <qiaolongfei@baidu.com>
Date: Sun, 3 Sep 2017 12:13:22 -0700
Subject: [PATCH 33/72] add GetAttr to InferShapeContext

---
 paddle/framework/operator.h            | 5 +++++
 paddle/operators/gaussian_random_op.cc | 7 +++----
 paddle/operators/gaussian_random_op.cu | 7 +++----
 paddle/operators/scale_op.h            | 2 +-
 paddle/operators/sgd_op.h              | 2 +-
 paddle/operators/uniform_random_op.cc  | 7 +++----
 paddle/operators/uniform_random_op.cu  | 7 +++----
 7 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/paddle/framework/operator.h b/paddle/framework/operator.h
index 9874a7c295..29fa3ffd87 100644
--- a/paddle/framework/operator.h
+++ b/paddle/framework/operator.h
@@ -233,6 +233,11 @@ class InferShapeContext {
 
   const Scope& scope() const { return scope_; }
 
+  template <typename T>
+  inline const T& GetAttr(const std::string& name) const {
+    return op_.GetAttr<T>(name);
+  }
+
   size_t InputSize(const std::string& name) const {
     return op_.Inputs(name).size();
   }
diff --git a/paddle/operators/gaussian_random_op.cc b/paddle/operators/gaussian_random_op.cc
index 9eb976fed1..056447901d 100644
--- a/paddle/operators/gaussian_random_op.cc
+++ b/paddle/operators/gaussian_random_op.cc
@@ -19,13 +19,12 @@ template <typename T>
 class CPUGaussianRandomKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& context) const override {
-    float mean = context.op().GetAttr<float>("mean");
-    float std = context.op().GetAttr<float>("std");
+    float mean = context.GetAttr<float>("mean");
+    float std = context.GetAttr<float>("std");
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
 
-    unsigned int seed =
-        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
+    unsigned int seed = static_cast<unsigned int>(context.GetAttr<int>("seed"));
     std::minstd_rand engine;
     if (seed == 0) {
       seed = std::random_device()();
diff --git a/paddle/operators/gaussian_random_op.cu b/paddle/operators/gaussian_random_op.cu
index 9769fbcd2b..833a82bbf2 100644
--- a/paddle/operators/gaussian_random_op.cu
+++ b/paddle/operators/gaussian_random_op.cu
@@ -42,14 +42,13 @@ class GPUGaussianRandomKernel : public framework::OpKernel {
   void Compute(const framework::ExecutionContext& context) const override {
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
-    unsigned int seed =
-        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
+    unsigned int seed = static_cast<unsigned int>(context.GetAttr<int>("seed"));
     if (seed == 0) {
       std::random_device rd;
       seed = rd();
     }
-    T mean = static_cast<T>(context.op().GetAttr<float>("mean"));
-    T std = static_cast<T>(context.op().GetAttr<float>("std"));
+    T mean = static_cast<T>(context.GetAttr<float>("mean"));
+    T std = static_cast<T>(context.GetAttr<float>("std"));
     thrust::counting_iterator<unsigned int> index_sequence_begin(0);
     ssize_t N = framework::product(tensor->dims());
     thrust::transform(index_sequence_begin, index_sequence_begin + N,
diff --git a/paddle/operators/scale_op.h b/paddle/operators/scale_op.h
index 760b26f5e9..65fb77eefa 100644
--- a/paddle/operators/scale_op.h
+++ b/paddle/operators/scale_op.h
@@ -27,7 +27,7 @@ class ScaleKernel : public framework::OpKernel {
     auto* in = context.Input<framework::Tensor>("X");
     tensor->mutable_data<T>(in->place());
 
-    auto scale = static_cast<T>(context.op().GetAttr<AttrType>("scale"));
+    auto scale = static_cast<T>(context.GetAttr<AttrType>("scale"));
 
     auto eigen_out = framework::EigenVector<T>::Flatten(*tensor);
     auto eigen_in = framework::EigenVector<T>::Flatten(*in);
diff --git a/paddle/operators/sgd_op.h b/paddle/operators/sgd_op.h
index b54a7864b0..8422b622ee 100644
--- a/paddle/operators/sgd_op.h
+++ b/paddle/operators/sgd_op.h
@@ -31,7 +31,7 @@ class SGDOpKernel : public framework::OpKernel {
     auto param = ctx.Input<Tensor>("param");
     auto grad = ctx.Input<Tensor>("grad");
     auto param_out = ctx.Output<Tensor>("param_out");
-    float lr = ctx.op().GetAttr<float>("learning_rate");
+    float lr = ctx.GetAttr<float>("learning_rate");
 
     param_out->mutable_data<T>(ctx.GetPlace());
 
diff --git a/paddle/operators/uniform_random_op.cc b/paddle/operators/uniform_random_op.cc
index dbff2a1365..2d943c4508 100644
--- a/paddle/operators/uniform_random_op.cc
+++ b/paddle/operators/uniform_random_op.cc
@@ -26,16 +26,15 @@ class CPUUniformRandomKernel : public framework::OpKernel {
   void Compute(const framework::ExecutionContext& context) const override {
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
-    unsigned int seed =
-        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
+    unsigned int seed = static_cast<unsigned int>(context.GetAttr<int>("seed"));
     std::minstd_rand engine;
     if (seed == 0) {
       seed = std::random_device()();
     }
     engine.seed(seed);
     std::uniform_real_distribution<T> dist(
-        static_cast<T>(context.op().GetAttr<float>("min")),
-        static_cast<T>(context.op().GetAttr<float>("max")));
+        static_cast<T>(context.GetAttr<float>("min")),
+        static_cast<T>(context.GetAttr<float>("max")));
     ssize_t size = framework::product(tensor->dims());
     for (ssize_t i = 0; i < size; ++i) {
       data[i] = dist(engine);
diff --git a/paddle/operators/uniform_random_op.cu b/paddle/operators/uniform_random_op.cu
index fc8397f134..df993c0779 100644
--- a/paddle/operators/uniform_random_op.cu
+++ b/paddle/operators/uniform_random_op.cu
@@ -45,14 +45,13 @@ class GPUUniformRandomKernel : public framework::OpKernel {
   void Compute(const framework::ExecutionContext& context) const override {
     auto* tensor = context.Output<framework::Tensor>("Out");
     T* data = tensor->mutable_data<T>(context.GetPlace());
-    unsigned int seed =
-        static_cast<unsigned int>(context.op().GetAttr<int>("seed"));
+    unsigned int seed = static_cast<unsigned int>(context.GetAttr<int>("seed"));
     if (seed == 0) {
       std::random_device rd;
       seed = rd();
     }
-    T min = static_cast<T>(context.op().GetAttr<float>("min"));
-    T max = static_cast<T>(context.op().GetAttr<float>("max"));
+    T min = static_cast<T>(context.GetAttr<float>("min"));
+    T max = static_cast<T>(context.GetAttr<float>("max"));
     thrust::counting_iterator<unsigned int> index_sequence_begin(0);
     ssize_t N = framework::product(tensor->dims());
     thrust::transform(index_sequence_begin, index_sequence_begin + N,

From 7d5bdbbfee3e0c5a4dba3057c6dfb028dbf28ab8 Mon Sep 17 00:00:00 2001
From: Yu Yang <yuyang18@baidu.com>
Date: Sun, 3 Sep 2017 12:28:18 -0700
Subject: [PATCH 34/72] Add GenerateTemporaryNames/CheckAllInputOutputSet

---
 paddle/framework/op_info.h   | 14 ++++++++++--
 paddle/framework/operator.cc | 41 +++++++++++++++++++++++++++---------
 paddle/framework/operator.h  |  4 ++++
 3 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/paddle/framework/op_info.h b/paddle/framework/op_info.h
index 94245c6c44..b98d8f23a1 100644
--- a/paddle/framework/op_info.h
+++ b/paddle/framework/op_info.h
@@ -80,9 +80,19 @@ class OpInfoMap {
   }
 
   const OpInfo& Get(const std::string& type) const {
+    auto op_info_ptr = GetNullable(type);
+    PADDLE_ENFORCE_NOT_NULL(op_info_ptr, "Operator %s has not been registered",
+                            type);
+    return *op_info_ptr;
+  }
+
+  const OpInfo* GetNullable(const std::string& type) const {
     auto it = map_.find(type);
-    PADDLE_ENFORCE(it != map_.end(), "Operator %s are not found", type);
-    return it->second;
+    if (it == map_.end()) {
+      return nullptr;
+    } else {
+      return &it->second;
+    }
   }
 
   template <typename Callback>
diff --git a/paddle/framework/operator.cc b/paddle/framework/operator.cc
index 68fb469b56..88a872deaa 100644
--- a/paddle/framework/operator.cc
+++ b/paddle/framework/operator.cc
@@ -119,16 +119,8 @@ OperatorBase::OperatorBase(const std::string& type,
                            const VariableNameMap& outputs,
                            const AttributeMap& attrs)
     : type_(type), inputs_(inputs), outputs_(outputs), attrs_(attrs) {
-  static std::atomic<size_t> gUniqId(0UL);
-  for (auto& output : outputs_) {
-    for (auto& output_name : output.second) {
-      if (output_name == kTempVarName) {
-        output_name += type_;
-        output_name += "@";
-        output_name += std::to_string(gUniqId.fetch_add(1));
-      }
-    }
-  }
+  GenerateTemporaryNames();
+  CheckAllInputOutputSet();
 }
 
 std::vector<std::string> OperatorBase::OutputVars(bool has_intermediate) const {
@@ -156,6 +148,35 @@ std::vector<std::string> OperatorBase::OutputVars(bool has_intermediate) const {
   return ret_val;
 }
 
+void OperatorBase::CheckAllInputOutputSet() const {
+  auto& info_map = OpInfoMap::Instance();
+  auto* op_info = info_map.GetNullable(Type());
+  if (op_info == nullptr) return;
+
+  for (auto& in : op_info->Proto().inputs()) {
+    PADDLE_ENFORCE(inputs_.find(in.name()) != inputs_.end(),
+                   "input %s is not set", in.name());
+  }
+
+  for (auto& out : op_info->Proto().outputs()) {
+    PADDLE_ENFORCE(outputs_.find(out.name()) != outputs_.end(),
+                   "output %s is not set", out.name());
+  }
+}
+
+void OperatorBase::GenerateTemporaryNames() {
+  static std::atomic<size_t> gUniqId(0UL);
+  for (auto& output : outputs_) {
+    for (auto& output_name : output.second) {
+      if (output_name == kTempVarName) {
+        output_name += type_;
+        output_name += "@";
+        output_name += std::to_string(gUniqId.fetch_add(1));
+      }
+    }
+  }
+}
+
 void OpProtoAndCheckerMaker::Validate() {
   validated_ = true;
   CheckNoDuplicatedInOutAttrs();
diff --git a/paddle/framework/operator.h b/paddle/framework/operator.h
index 60ca8b279e..590e335fdc 100644
--- a/paddle/framework/operator.h
+++ b/paddle/framework/operator.h
@@ -127,6 +127,10 @@ class OperatorBase {
   // IG (Inputs Gradients)
   VariableNameMap outputs_;
   AttributeMap attrs_;
+
+ private:
+  void GenerateTemporaryNames();
+  void CheckAllInputOutputSet() const;
 };
 
 // Macro for define a clone method.

From 13b43279dc543a6fcbeca3899e8c3fbbbda227c1 Mon Sep 17 00:00:00 2001
From: Yu Yang <yuyang18@baidu.com>
Date: Sun, 3 Sep 2017 14:47:53 -0700
Subject: [PATCH 35/72] Fix CI Test

---
 paddle/framework/backward_test.cc | 6 +++---
 paddle/framework/operator.cc      | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/paddle/framework/backward_test.cc b/paddle/framework/backward_test.cc
index f100c4d054..ad8003420d 100644
--- a/paddle/framework/backward_test.cc
+++ b/paddle/framework/backward_test.cc
@@ -127,8 +127,8 @@ class FillZeroOpMaker : public OpProtoAndCheckerMaker {
  public:
   FillZeroOpMaker(OpProto *proto, OpAttrChecker *op_checker)
       : OpProtoAndCheckerMaker(proto, op_checker) {
-    AddInput("x", "x");
-    AddOutput("out", "out");
+    AddInput("Src", "x");
+    AddOutput("Dst", "out");
     AddComment("");
   }
 };
@@ -138,7 +138,7 @@ class AddOpMaker : public OpProtoAndCheckerMaker {
   AddOpMaker(OpProto *proto, OpAttrChecker *op_checker)
       : OpProtoAndCheckerMaker(proto, op_checker) {
     AddInput("X", "x").AsDuplicable();
-    AddOutput("Y", "y");
+    AddOutput("Out", "out");
     AddComment("");
   }
 };
diff --git a/paddle/framework/operator.cc b/paddle/framework/operator.cc
index 88a872deaa..790cfc4746 100644
--- a/paddle/framework/operator.cc
+++ b/paddle/framework/operator.cc
@@ -151,16 +151,16 @@ std::vector<std::string> OperatorBase::OutputVars(bool has_intermediate) const {
 void OperatorBase::CheckAllInputOutputSet() const {
   auto& info_map = OpInfoMap::Instance();
   auto* op_info = info_map.GetNullable(Type());
-  if (op_info == nullptr) return;
+  if (op_info == nullptr || op_info->proto_ == nullptr) return;
 
   for (auto& in : op_info->Proto().inputs()) {
     PADDLE_ENFORCE(inputs_.find(in.name()) != inputs_.end(),
-                   "input %s is not set", in.name());
+                   "Type %s's input %s is not set", Type(), in.name());
   }
 
   for (auto& out : op_info->Proto().outputs()) {
     PADDLE_ENFORCE(outputs_.find(out.name()) != outputs_.end(),
-                   "output %s is not set", out.name());
+                   "Type %s's output %s is not set", Type(), out.name());
   }
 }
 

From e0c27a96ebdc45c72f5c148e14b5acfd3c13bdf5 Mon Sep 17 00:00:00 2001
From: zchen0211 <chenzhuoyuan07@gmail.com>
Date: Sun, 3 Sep 2017 21:56:14 +0000
Subject: [PATCH 36/72] if else slight modify

---
 doc/design/if_else_op.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/design/if_else_op.md b/doc/design/if_else_op.md
index daba92248e..7370c2a24f 100644
--- a/doc/design/if_else_op.md
+++ b/doc/design/if_else_op.md
@@ -7,7 +7,7 @@ x = var()
 y = var()
 cond = var()
 
-b = pd.create_ifop_builder(inputs=[x], output_num=1)
+b = pd.create_ifop(inputs=[x], output_num=1)
 with b.true_block():
     x = b.inputs(0)
     z = operator.add(x, y)
@@ -25,7 +25,7 @@ x = var()
 y = var()
 cond = var()
 default_value = var()
-b = pd.create_ifelseop_builder(inputs=[x], output_num=1)
+b = pd.create_ifelseop(inputs=[x], output_num=1)
 with b.true_block():
     x = b.inputs(0)
     z = operator.add(x, y)
@@ -47,7 +47,7 @@ x = var()
 y = var()
 cond = var()
 default_value = var()
-b = pd.create_ifelseop_builder(inputs=[x], output_num=1, default_value)
+b = pd.create_ifelseop(inputs=[x], output_num=1, default_value)
 
 with b.true_block():
     x = b.inputs(0)

From 8c048aa0996f57c7a94d83c0bd043fa40fb3ab9f Mon Sep 17 00:00:00 2001
From: dangqingqing <dangqingqing@baidu.com>
Date: Mon, 4 Sep 2017 11:15:45 +0800
Subject: [PATCH 37/72] Remove cudnn_helper.cc

---
 paddle/platform/CMakeLists.txt       |  1 -
 paddle/platform/cudnn_helper.cc      | 15 ---------------
 paddle/platform/cudnn_helper.h       | 22 ----------------------
 paddle/platform/cudnn_helper_test.cc |  3 +--
 4 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100644 paddle/platform/cudnn_helper.cc

diff --git a/paddle/platform/CMakeLists.txt b/paddle/platform/CMakeLists.txt
index 9a3ad8eb64..17bdac8749 100644
--- a/paddle/platform/CMakeLists.txt
+++ b/paddle/platform/CMakeLists.txt
@@ -23,5 +23,4 @@ cc_library(device_context SRCS device_context.cc DEPS memory buddy_allocator
     system_allocator memory_block meta_data meta_cache place eigen3 ${GPU_CTX_DEPS})
 nv_test(device_context_test SRCS device_context_test.cc DEPS device_context gpu_info)
 
-nv_library(cudnn_helper SRCS cudnn_helper.cc DEPS dynload_cuda)
 nv_test(cudnn_helper_test SRCS cudnn_helper_test.cc DEPS dynload_cuda)
diff --git a/paddle/platform/cudnn_helper.cc b/paddle/platform/cudnn_helper.cc
deleted file mode 100644
index 764285e2ba..0000000000
--- a/paddle/platform/cudnn_helper.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License. */
-
-#include "paddle/platform/cudnn_helper.h"
diff --git a/paddle/platform/cudnn_helper.h b/paddle/platform/cudnn_helper.h
index 6a43f49cfc..24ddf3441c 100644
--- a/paddle/platform/cudnn_helper.h
+++ b/paddle/platform/cudnn_helper.h
@@ -14,9 +14,6 @@ limitations under the License. */
 
 #pragma once
 
-#ifndef PADDLE_ONLY_CPU
-#include <cudnn.h>
-#include "glog/logging.h"
 #include "paddle/platform/dynload/cudnn.h"
 #include "paddle/platform/enforce.h"
 #include "paddle/platform/macros.h"
@@ -42,30 +39,12 @@ template <>
 class CudnnDataType<float> {
  public:
   static const cudnnDataType_t type = CUDNN_DATA_FLOAT;
-  typedef const float ScalingParamType;
-  static ScalingParamType* kOne() {
-    static ScalingParamType v = 1.0;
-    return &v;
-  }
-  static const ScalingParamType* kZero() {
-    static ScalingParamType v = 0.0;
-    return &v;
-  }
 };
 
 template <>
 class CudnnDataType<double> {
  public:
   static const cudnnDataType_t type = CUDNN_DATA_DOUBLE;
-  typedef const double ScalingParamType;
-  static ScalingParamType* kOne() {
-    static ScalingParamType v = 1.0;
-    return &v;
-  }
-  static ScalingParamType* kZero() {
-    static ScalingParamType v = 0.0;
-    return &v;
-  }
 };
 
 inline cudnnTensorFormat_t GetCudnnTensorFormat(const DataLayout& order) {
@@ -219,4 +198,3 @@ class ScopedPoolingDescriptor {
 
 }  // namespace platform
 }  // namespace paddle
-#endif
diff --git a/paddle/platform/cudnn_helper_test.cc b/paddle/platform/cudnn_helper_test.cc
index 729f2f8a10..6bd85ae1ca 100644
--- a/paddle/platform/cudnn_helper_test.cc
+++ b/paddle/platform/cudnn_helper_test.cc
@@ -13,8 +13,7 @@ See the License for the specific language governing permissions and
 limitations under the License. */
 
 #include "paddle/platform/cudnn_helper.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
+#include <gtest/gtest.h>
 
 TEST(CudnnHelper, ScopedTensorDescriptor) {
   using paddle::platform::ScopedTensorDescriptor;

From faa4da4835e0622387e2ab1f6481875c5243c5c9 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 13:02:27 +0800
Subject: [PATCH 38/72] fix ctc edit distance in v2 API.

---
 .../gserver/evaluators/CTCErrorEvaluator.cpp  | 56 +++++++++++++++----
 1 file changed, 46 insertions(+), 10 deletions(-)

diff --git a/paddle/gserver/evaluators/CTCErrorEvaluator.cpp b/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
index 132119015f..8e2dc020cd 100644
--- a/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
+++ b/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
@@ -26,6 +26,7 @@ private:
   int numTimes_, numClasses_, numSequences_, blank_;
   real deletions_, insertions_, substitutions_;
   int seqClassficationError_;
+  mutable std::unordered_map<std::string, real> evalResults_;
 
   std::vector<int> path2String(const std::vector<int>& path) {
     std::vector<int> str;
@@ -183,6 +184,18 @@ private:
     return stringAlignment(gtStr, recogStr);
   }
 
+  void storeLocalValues() const {
+    evalResults_["error"] = numSequences_ ? totalScore_ / numSequences_ : 0;
+    evalResults_["deletion_error"] =
+        numSequences_ ? deletions_ / numSequences_ : 0;
+    evalResults_["insertion_error"] =
+        numSequences_ ? insertions_ / numSequences_ : 0;
+    evalResults_["substitution_error"] =
+        numSequences_ ? substitutions_ / numSequences_ : 0;
+    evalResults_["sequence_error"] =
+        (real)seqClassficationError_ / numSequences_;
+  }
+
 public:
   CTCErrorEvaluator()
       : numTimes_(0),
@@ -245,16 +258,12 @@ public:
   }
 
   virtual void printStats(std::ostream& os) const {
-    os << config_.name() << "="
-       << (numSequences_ ? totalScore_ / numSequences_ : 0);
-    os << "  deletions error"
-       << "=" << (numSequences_ ? deletions_ / numSequences_ : 0);
-    os << "  insertions error"
-       << "=" << (numSequences_ ? insertions_ / numSequences_ : 0);
-    os << "  substitutions error"
-       << "=" << (numSequences_ ? substitutions_ / numSequences_ : 0);
-    os << "  sequences error"
-       << "=" << (real)seqClassficationError_ / numSequences_;
+    storeLocalValues();
+    os << config_.name() << "=" << evalResults_["error"];
+    os << " deletions error = " << evalResults_["deletion_error"];
+    os << " insertions error = " << evalResults_["insertion_error"];
+    os << " substitution error = " << evalResults_["substitution_error"];
+    os << " sequence error = " << evalResults_["sequence_error"];
   }
 
   virtual void distributeEval(ParameterClient2* client) {
@@ -272,6 +281,33 @@ public:
     seqClassficationError_ = (int)buf[4];
     numSequences_ = (int)buf[5];
   }
+
+  void getNames(std::vector<std::string>* names) {
+    storeLocalValues();
+    names->reserve(names->size() + evalResults_.size());
+    for (auto it = evalResults_.begin(); it != evalResults_.end(); ++it) {
+      names->push_back(config_.name() + "." + it->first);
+    }
+  }
+
+  real getValue(const std::string& name, Error* err) const {
+    storeLocalValues();
+
+    const std::string delimiter(".");
+    std::string::size_type foundPos = name.find(delimiter, 0);
+    CHECK(foundPos != std::string::npos);
+
+    auto it = evalResults_.find(
+        name.substr(foundPos + delimiter.size(), name.length()));
+    if (it == evalResults_.end()) {
+      *err = Error("Evaluator does not have the key %s", name.c_str());
+      return 0.0f;
+    }
+
+    return it->second;
+  }
+
+  std::string getTypeImpl() const { return "ctc_edit_distance"; }
 };
 
 REGISTER_EVALUATOR(ctc_edit_distance, CTCErrorEvaluator);

From a60128aeb235c3e53b6785537bf3f67502ca079d Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Mon, 4 Sep 2017 14:11:43 +0800
Subject: [PATCH 39/72] move identity_op from scale_op.cc to be a single file

---
 paddle/operators/CMakeLists.txt |  2 ++
 paddle/operators/identity_op.cc | 54 +++++++++++++++++++++++++++++++++
 paddle/operators/scale_op.cc    | 31 +------------------
 3 files changed, 57 insertions(+), 30 deletions(-)
 create mode 100644 paddle/operators/identity_op.cc

diff --git a/paddle/operators/CMakeLists.txt b/paddle/operators/CMakeLists.txt
index e5efcccb0e..d85c3d575a 100644
--- a/paddle/operators/CMakeLists.txt
+++ b/paddle/operators/CMakeLists.txt
@@ -48,12 +48,14 @@ add_subdirectory(math)
 
 list(REMOVE_ITEM GENERAL_OPS
      net_op
+     identity_op
      minus_op
      mul_op
      recurrent_op
      scale_op)
 
 op_library(net_op SRCS net_op.cc)
+op_library(identity_op SRCS identity_op.cc DEPS scale_op)
 op_library(minus_op SRCS minus_op.cc minus_op.cu DEPS scale_op)
 op_library(mul_op SRCS mul_op.cc mul_op.cu DEPS math_function)
 op_library(recurrent_op SRCS recurrent_op.cc rnn/recurrent_op_utils.cc 
diff --git a/paddle/operators/identity_op.cc b/paddle/operators/identity_op.cc
new file mode 100644
index 0000000000..be956bf3b3
--- /dev/null
+++ b/paddle/operators/identity_op.cc
@@ -0,0 +1,54 @@
+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. */
+
+#include "paddle/operators/net_op.h"
+#include "paddle/operators/scale_op.h"
+
+namespace paddle {
+namespace operators {
+
+// identity is a alias of scale op. This is also a example for creating a alias
+// operator.
+template <typename AttrType>
+class IdentityOpMaker : public framework::OpProtoAndCheckerMaker {
+ public:
+  IdentityOpMaker(framework::OpProto *proto,
+                  framework::OpAttrChecker *op_checker)
+      : OpProtoAndCheckerMaker(proto, op_checker) {
+    AddInput("X", "input tensor of identity op");
+    AddOutput("Out", "output tensor of identity op");
+    AddComment("identity operator. Just a alias of scale op which scale = 1.0");
+  }
+};
+
+template <typename AttrType>
+class IdentityOp : public NetOp {
+ public:
+  IdentityOp(const std::string &type, const framework::VariableNameMap &inputs,
+             const framework::VariableNameMap &outputs,
+             const framework::AttributeMap &attrs)
+      : NetOp(type, inputs, outputs, attrs) {
+    AppendOp(framework::OpRegistry::CreateOp(
+        "scale", {{"X", {Input("X")}}}, {{"Out", {Output("Out")}}},
+        {{"scale", static_cast<AttrType>(1)}}));
+  }
+};
+
+}  // namespace operators
+}  // namespace paddle
+
+namespace ops = paddle::operators;
+
+REGISTER_OP_WITHOUT_GRADIENT(identity, ops::IdentityOp<float>,
+                             ops::IdentityOpMaker<float>);
diff --git a/paddle/operators/scale_op.cc b/paddle/operators/scale_op.cc
index 4e039688d4..57696d2ee6 100644
--- a/paddle/operators/scale_op.cc
+++ b/paddle/operators/scale_op.cc
@@ -48,7 +48,7 @@ The equation is: Out = scale*X
   }
 };
 
-// Identity Op's gradient is identity op, too.
+// Scale Op's gradient is scale op, too.
 // Grad(Out=scale(X)) => Grad(X) = scale(Grad(Out))
 template <typename AttrType>
 class ScaleGradOp : public NetOp {
@@ -65,33 +65,6 @@ class ScaleGradOp : public NetOp {
   }
 };
 
-// identity is a alias of scale op. This is also a example for creating a alias
-// operator.
-template <typename AttrType>
-class IdentityOpMaker : public framework::OpProtoAndCheckerMaker {
- public:
-  IdentityOpMaker(framework::OpProto *proto,
-                  framework::OpAttrChecker *op_checker)
-      : OpProtoAndCheckerMaker(proto, op_checker) {
-    AddInput("X", "input tensor of identity op");
-    AddOutput("Out", "output tensor of identity op");
-    AddComment("identity operator. Just a alias of scale op which scale = 1.0");
-  }
-};
-
-template <typename AttrType>
-class IdentityOp : public NetOp {
- public:
-  IdentityOp(const std::string &type, const framework::VariableNameMap &inputs,
-             const framework::VariableNameMap &outputs,
-             const framework::AttributeMap &attrs)
-      : NetOp(type, inputs, outputs, attrs) {
-    AppendOp(framework::OpRegistry::CreateOp(
-        "scale", {{"X", {Input("X")}}}, {{"Out", {Output("Out")}}},
-        {{"scale", static_cast<AttrType>(1)}}));
-  }
-};
-
 }  // namespace operators
 }  // namespace paddle
 
@@ -101,5 +74,3 @@ REGISTER_OP(scale, ops::ScaleOp, ops::ScaleOpMaker<float>,
             ops::ScaleGradOp<float>);
 REGISTER_OP_CPU_KERNEL(scale,
                        ops::ScaleKernel<paddle::platform::CPUPlace, float>);
-REGISTER_OP_WITHOUT_GRADIENT(identity, ops::IdentityOp<float>,
-                             ops::IdentityOpMaker<float>);

From fb49bc2c99c5deb0d7ebc9507410b8e60b0bb27c Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 14:15:50 +0800
Subject: [PATCH 40/72] rename mse_cost into square_error_cost.

---
 .../paddle/trainer_config_helpers/layers.py   | 29 +++++++++++--------
 .../test_cost_layers_with_weight.protostr     |  8 ++---
 .../configs/test_cost_layers_with_weight.py   |  2 +-
 3 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/python/paddle/trainer_config_helpers/layers.py b/python/paddle/trainer_config_helpers/layers.py
index 2bd274fad2..47ac601e67 100644
--- a/python/paddle/trainer_config_helpers/layers.py
+++ b/python/paddle/trainer_config_helpers/layers.py
@@ -53,7 +53,7 @@ __all__ = [
     'cos_sim',
     'hsigmoid',
     'conv_projection',
-    'mse_cost',
+    'square_error_cost',
     'regression_cost',
     'classification_cost',
     'LayerOutput',
@@ -4238,13 +4238,18 @@ def __cost_input__(input, label, weight=None):
 
 @wrap_name_default()
 @layer_support()
-def mse_cost(input, label, weight=None, name=None, coeff=1.0, layer_attr=None):
+def square_error_cost(input,
+                      label,
+                      weight=None,
+                      name=None,
+                      coeff=1.0,
+                      layer_attr=None):
     """
-    mean squared error cost:
+    sum of square error cost:
 
     ..  math::
 
-        \\frac{1}{N}\sum_{i=1}^N(t_i-y_i)^2
+        cost = \\sum_{i=1}^N(t_i-y_i)^2
 
     :param name: layer name.
     :type name: basestring
@@ -4273,7 +4278,7 @@ def mse_cost(input, label, weight=None, name=None, coeff=1.0, layer_attr=None):
     return LayerOutput(name, LayerType.COST, parents=parents, size=1)
 
 
-regression_cost = mse_cost
+regression_cost = square_error_cost
 
 
 @wrap_name_default("cost")
@@ -5798,9 +5803,9 @@ def huber_regression_cost(input,
                           coeff=1.0,
                           layer_attr=None):
     """
-    In statistics, the Huber loss is a loss function used in robust regression, 
-    that is less sensitive to outliers in data than the squared error loss. 
-    Given a prediction f(x), a label y and :math:`\delta`, the loss function 
+    In statistics, the Huber loss is a loss function used in robust regression,
+    that is less sensitive to outliers in data than the squared error loss.
+    Given a prediction f(x), a label y and :math:`\delta`, the loss function
     is defined as:
 
     .. math:
@@ -5848,13 +5853,13 @@ def huber_classification_cost(input,
                               coeff=1.0,
                               layer_attr=None):
     """
-    For classification purposes, a variant of the Huber loss called modified Huber 
-    is sometimes used. Given a prediction f(x) (a real-valued classifier score) and 
-    a true binary class label :math:`y\in \left \{-1, 1 \right \}`, the modified Huber 
+    For classification purposes, a variant of the Huber loss called modified Huber
+    is sometimes used. Given a prediction f(x) (a real-valued classifier score) and
+    a true binary class label :math:`y\in \left \{-1, 1 \right \}`, the modified Huber
     loss is defined as:
 
     .. math:
-       loss = \max \left ( 0, 1-yf(x) \right )^2, yf(x)\geq 1 
+       loss = \max \left ( 0, 1-yf(x) \right )^2, yf(x)\geq 1
        loss = -4yf(x), \text{otherwise}
 
     The example usage is:
diff --git a/python/paddle/trainer_config_helpers/tests/configs/protostr/test_cost_layers_with_weight.protostr b/python/paddle/trainer_config_helpers/tests/configs/protostr/test_cost_layers_with_weight.protostr
index 96fb1d4ebd..cec8a73db6 100644
--- a/python/paddle/trainer_config_helpers/tests/configs/protostr/test_cost_layers_with_weight.protostr
+++ b/python/paddle/trainer_config_helpers/tests/configs/protostr/test_cost_layers_with_weight.protostr
@@ -45,7 +45,7 @@ layers {
   coeff: 1.0
 }
 layers {
-  name: "__mse_cost_0__"
+  name: "__square_error_cost_0__"
   type: "square_error"
   size: 1
   active_type: ""
@@ -130,7 +130,7 @@ input_layer_names: "label"
 input_layer_names: "weight"
 input_layer_names: "multi_class_label"
 output_layer_names: "__cost_0__"
-output_layer_names: "__mse_cost_0__"
+output_layer_names: "__square_error_cost_0__"
 output_layer_names: "__nce_layer_0__"
 evaluators {
   name: "classification_error_evaluator"
@@ -146,7 +146,7 @@ sub_models {
   layer_names: "weight"
   layer_names: "__fc_layer_0__"
   layer_names: "__cost_0__"
-  layer_names: "__mse_cost_0__"
+  layer_names: "__square_error_cost_0__"
   layer_names: "multi_class_label"
   layer_names: "__nce_layer_0__"
   input_layer_names: "input"
@@ -154,7 +154,7 @@ sub_models {
   input_layer_names: "weight"
   input_layer_names: "multi_class_label"
   output_layer_names: "__cost_0__"
-  output_layer_names: "__mse_cost_0__"
+  output_layer_names: "__square_error_cost_0__"
   output_layer_names: "__nce_layer_0__"
   evaluator_names: "classification_error_evaluator"
   is_recurrent_layer_group: false
diff --git a/python/paddle/trainer_config_helpers/tests/configs/test_cost_layers_with_weight.py b/python/paddle/trainer_config_helpers/tests/configs/test_cost_layers_with_weight.py
index c369062930..caa6aaa943 100644
--- a/python/paddle/trainer_config_helpers/tests/configs/test_cost_layers_with_weight.py
+++ b/python/paddle/trainer_config_helpers/tests/configs/test_cost_layers_with_weight.py
@@ -10,7 +10,7 @@ fc = fc_layer(input=data, size=10, act=SoftmaxActivation())
 outputs(
     classification_cost(
         input=fc, label=lbl, weight=wt),
-    mse_cost(
+    square_error_cost(
         input=fc, label=lbl, weight=wt),
     nce_layer(
         input=fc,

From c2c5df29110c69f3cf64e627c78ce7897e487025 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 14:56:13 +0800
Subject: [PATCH 41/72] update doc.

---
 doc/api/v2/config/layer.rst                 | 4 ++--
 doc/getstarted/basic_usage/index_en.rst     | 2 +-
 doc/getstarted/concepts/src/train.py        | 2 +-
 doc/getstarted/concepts/use_concepts_cn.rst | 4 ++--
 doc/howto/usage/k8s/k8s_distributed_cn.md   | 2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/doc/api/v2/config/layer.rst b/doc/api/v2/config/layer.rst
index 1329b77bb4..c94627a728 100644
--- a/doc/api/v2/config/layer.rst
+++ b/doc/api/v2/config/layer.rst
@@ -434,9 +434,9 @@ lambda_cost
 ..  autoclass:: paddle.v2.layer.lambda_cost
     :noindex:
 
-mse_cost
+square_error_cost
 --------
-..  autoclass:: paddle.v2.layer.mse_cost
+..  autoclass:: paddle.v2.layer.square_error_cost
     :noindex:
 
 rank_cost
diff --git a/doc/getstarted/basic_usage/index_en.rst b/doc/getstarted/basic_usage/index_en.rst
index 6775da20c2..2cc438ebbe 100644
--- a/doc/getstarted/basic_usage/index_en.rst
+++ b/doc/getstarted/basic_usage/index_en.rst
@@ -49,7 +49,7 @@ To recover this relationship between ``X`` and ``Y``, we use a neural network wi
         x = data_layer(name='x', size=1)
         y = data_layer(name='y', size=1)
         y_predict = fc_layer(input=x, param_attr=ParamAttr(name='w'), size=1, act=LinearActivation(), bias_attr=ParamAttr(name='b'))
-        cost = mse_cost(input=y_predict, label=y)
+        cost = square_error_cost(input=y_predict, label=y)
         outputs(cost)
 
 Some of the most fundamental usages of PaddlePaddle are demonstrated:
diff --git a/doc/getstarted/concepts/src/train.py b/doc/getstarted/concepts/src/train.py
index 7e604f23de..8aceb23406 100644
--- a/doc/getstarted/concepts/src/train.py
+++ b/doc/getstarted/concepts/src/train.py
@@ -8,7 +8,7 @@ paddle.init(use_gpu=False)
 x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(2))
 y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())
 y = paddle.layer.data(name='y', type=paddle.data_type.dense_vector(1))
-cost = paddle.layer.mse_cost(input=y_predict, label=y)
+cost = paddle.layer.square_error_cost(input=y_predict, label=y)
 
 # create parameters
 parameters = paddle.parameters.create(cost)
diff --git a/doc/getstarted/concepts/use_concepts_cn.rst b/doc/getstarted/concepts/use_concepts_cn.rst
index f15b11bd78..25bf7ff1d0 100644
--- a/doc/getstarted/concepts/use_concepts_cn.rst
+++ b/doc/getstarted/concepts/use_concepts_cn.rst
@@ -81,7 +81,7 @@ PaddlePaddle支持不同类型的输入数据,主要包括四种类型,和
 ..	code-block:: bash
 
     y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())
-    cost = paddle.layer.mse_cost(input=y_predict, label=y)
+    cost = paddle.layer.square_error_cost(input=y_predict, label=y)
 
 其中,x与y为之前描述的输入层;而y_predict是接收x作为输入,接上一个全连接层;cost接收y_predict与y作为输入,接上均方误差层。
 
@@ -147,4 +147,4 @@ PaddlePaddle支持不同类型的输入数据,主要包括四种类型,和
 ..  literalinclude:: src/train.py
     :linenos:
 
-有关线性回归的实际应用,可以参考PaddlePaddle book的 `第一章节 <http://book.paddlepaddle.org/index.html>`_。
\ No newline at end of file
+有关线性回归的实际应用,可以参考PaddlePaddle book的 `第一章节 <http://book.paddlepaddle.org/index.html>`_。
diff --git a/doc/howto/usage/k8s/k8s_distributed_cn.md b/doc/howto/usage/k8s/k8s_distributed_cn.md
index 3121b3f59d..a9bebf0955 100644
--- a/doc/howto/usage/k8s/k8s_distributed_cn.md
+++ b/doc/howto/usage/k8s/k8s_distributed_cn.md
@@ -213,7 +213,7 @@ I1116 09:10:17.123440    50 Util.cpp:130] Calling runInitFunctions
 I1116 09:10:17.123764    50 Util.cpp:143] Call runInitFunctions done.
 [WARNING 2016-11-16 09:10:17,227 default_decorators.py:40] please use keyword arguments in paddle config.
 [INFO 2016-11-16 09:10:17,239 networks.py:1282] The input order is [movie_id, title, genres, user_id, gender, age, occupation, rating]
-[INFO 2016-11-16 09:10:17,239 networks.py:1289] The output order is [__mse_cost_0__]
+[INFO 2016-11-16 09:10:17,239 networks.py:1289] The output order is [__square_error_cost_0__]
 I1116 09:10:17.392917    50 Trainer.cpp:170] trainer mode: Normal
 I1116 09:10:17.613910    50 PyDataProvider2.cpp:257] loading dataprovider dataprovider::process
 I1116 09:10:17.680917    50 PyDataProvider2.cpp:257] loading dataprovider dataprovider::process

From 0b478e991c95f838da41bfcbf11f1e2b80ac17eb Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 15:12:56 +0800
Subject: [PATCH 42/72] follow comments.

---
 paddle/gserver/evaluators/CTCErrorEvaluator.cpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/paddle/gserver/evaluators/CTCErrorEvaluator.cpp b/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
index 8e2dc020cd..928c77a088 100644
--- a/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
+++ b/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
@@ -14,6 +14,7 @@ limitations under the License. */
 
 #include "Evaluator.h"
 #include "paddle/gserver/gradientmachines/NeuralNetwork.h"
+#include "paddle/utils/StringUtil.h"
 
 namespace paddle {
 
@@ -259,7 +260,7 @@ public:
 
   virtual void printStats(std::ostream& os) const {
     storeLocalValues();
-    os << config_.name() << "=" << evalResults_["error"];
+    os << config_.name() << " error = " << evalResults_["error"];
     os << " deletions error = " << evalResults_["deletion_error"];
     os << " insertions error = " << evalResults_["insertion_error"];
     os << " substitution error = " << evalResults_["substitution_error"];
@@ -293,12 +294,10 @@ public:
   real getValue(const std::string& name, Error* err) const {
     storeLocalValues();
 
-    const std::string delimiter(".");
-    std::string::size_type foundPos = name.find(delimiter, 0);
-    CHECK(foundPos != std::string::npos);
+    std::vector<std::string> buffers;
+    paddle::str::split(name, '.', &buffers);
+    auto it = evalResults_.find(buffers[buffers.size() - 1]);
 
-    auto it = evalResults_.find(
-        name.substr(foundPos + delimiter.size(), name.length()));
     if (it == evalResults_.end()) {
       *err = Error("Evaluator does not have the key %s", name.c_str());
       return 0.0f;
@@ -307,7 +306,11 @@ public:
     return it->second;
   }
 
-  std::string getTypeImpl() const { return "ctc_edit_distance"; }
+  std::string getType(const std::string& name, Error* err) const {
+    getValue(name, err);
+    if (!err->isOK()) return "";
+    return "ctc_edit_distance";
+  }
 };
 
 REGISTER_EVALUATOR(ctc_edit_distance, CTCErrorEvaluator);

From 5b93ac7778754943914b3f9511208e55a3526f64 Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Mon, 4 Sep 2017 15:49:33 +0800
Subject: [PATCH 43/72] package a new USE_NO_KERNEL_OP for USE_OP_ITSELF

---
 doc/howto/dev/new_op_cn.md       | 6 ++++++
 paddle/framework/backward.cc     | 2 +-
 paddle/framework/op_registry.h   | 2 ++
 paddle/operators/minus_op.cc     | 2 +-
 paddle/operators/recurrent_op.cc | 2 +-
 paddle/pybind/pybind.cc          | 4 ++--
 python/paddle/v2/framework/op.py | 2 +-
 7 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index ec79b7f42b..dfcbce9037 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -227,6 +227,12 @@ make mul_op
     USE_CPU_ONLY_OP(gather);
     ```
     
+    如果OP不带Kernel,则使用`USE_NO_KENREL_OP`:
+    
+    ```
+    USE_NO_KENREL_OP(recurrent);
+    ```
+    
     使用`USE_OP`告知编译器需要链接该Op的目标文件,具体解释参考[代码注释](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/op_registry.h#L81)。
     
     
diff --git a/paddle/framework/backward.cc b/paddle/framework/backward.cc
index 6b4c612cd8..c5d4662215 100644
--- a/paddle/framework/backward.cc
+++ b/paddle/framework/backward.cc
@@ -182,7 +182,7 @@ static std::unique_ptr<OperatorBase> BackwardRecursive(
                    });
 
     // process recurrent gradient op as a special operator.
-    if (forwardOp.Type() == "recurrent_op") {
+    if (forwardOp.Type() == "recurrent") {
       // NOTE clean up cycle call somewhere (RNN's stepnet constains itself), or
       // this will result in infinite loop.
       const auto& rnnop =
diff --git a/paddle/framework/op_registry.h b/paddle/framework/op_registry.h
index 64c7f23ab6..27f1927aed 100644
--- a/paddle/framework/op_registry.h
+++ b/paddle/framework/op_registry.h
@@ -194,6 +194,8 @@ class OpKernelRegistrar : public Registrar {
   USE_OP_DEVICE_KERNEL(op_type, GPU)
 #endif
 
+#define USE_NO_KERNEL_OP(op_type) USE_OP_ITSELF(op_type);
+
 #define USE_CPU_ONLY_OP(op_type) \
   USE_OP_ITSELF(op_type);        \
   USE_OP_DEVICE_KERNEL(op_type, CPU);
diff --git a/paddle/operators/minus_op.cc b/paddle/operators/minus_op.cc
index b4afebcd97..138cdbd563 100644
--- a/paddle/operators/minus_op.cc
+++ b/paddle/operators/minus_op.cc
@@ -79,7 +79,7 @@ class MinusGradOp : public NetOp {
 }  // namespace paddle
 
 USE_OP(scale);
-USE_OP_ITSELF(identity);
+USE_NO_KERNEL_OP(identity);
 namespace ops = paddle::operators;
 REGISTER_OP(minus, ops::MinusOp, ops::MinusOpMaker, ops::MinusGradOp<float>);
 REGISTER_OP_CPU_KERNEL(minus,
diff --git a/paddle/operators/recurrent_op.cc b/paddle/operators/recurrent_op.cc
index 16bd249cb3..e826703c60 100644
--- a/paddle/operators/recurrent_op.cc
+++ b/paddle/operators/recurrent_op.cc
@@ -235,5 +235,5 @@ RecurrentGradientOp::RecurrentGradientOp(
 }  // namespace paddle
 
 REGISTER_OP_WITHOUT_GRADIENT(
-    recurrent_op, paddle::operators::RecurrentOp,
+    recurrent, paddle::operators::RecurrentOp,
     paddle::operators::RecurrentAlgorithmProtoAndCheckerMaker);
diff --git a/paddle/pybind/pybind.cc b/paddle/pybind/pybind.cc
index 3bc150ccb7..6896422617 100644
--- a/paddle/pybind/pybind.cc
+++ b/paddle/pybind/pybind.cc
@@ -39,12 +39,12 @@ USE_OP(sigmoid);
 USE_OP(softmax);
 USE_OP(rowwise_add);
 USE_OP(fill_zeros_like);
-USE_OP_ITSELF(recurrent_op);
+USE_NO_KERNEL_OP(recurrent);
 USE_OP(gaussian_random);
 USE_OP(uniform_random);
 USE_OP(lookup_table);
 USE_OP(scale);
-USE_OP_ITSELF(identity);
+USE_NO_KERNEL_OP(identity);
 USE_OP(minus);
 USE_CPU_ONLY_OP(gather);
 USE_CPU_ONLY_OP(scatter);
diff --git a/python/paddle/v2/framework/op.py b/python/paddle/v2/framework/op.py
index 6ac656321e..e7e932f6fe 100644
--- a/python/paddle/v2/framework/op.py
+++ b/python/paddle/v2/framework/op.py
@@ -179,7 +179,7 @@ class OperatorFactory(object):
 
 class __RecurrentOp__(object):
     __proto__ = None
-    type = 'recurrent_op'
+    type = 'recurrent'
 
     def __init__(self):
         # cache recurrent_op's proto

From 10eacac9a700c02909f2c714280d66246db954b1 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 16:01:40 +0800
Subject: [PATCH 44/72] follow comments and fix unittest.

---
 doc/getstarted/basic_usage/index_cn.rst     | 4 ++--
 doc/getstarted/concepts/use_concepts_cn.rst | 2 +-
 python/paddle/v2/tests/test_layer.py        | 5 +++--
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/doc/getstarted/basic_usage/index_cn.rst b/doc/getstarted/basic_usage/index_cn.rst
index 428f58830e..b473944fc7 100644
--- a/doc/getstarted/basic_usage/index_cn.rst
+++ b/doc/getstarted/basic_usage/index_cn.rst
@@ -55,7 +55,7 @@ PaddlePaddle是源于百度的一个深度学习平台。这份简短的介绍
     # 线性计算网络层: ȳ = wx + b
     ȳ = fc_layer(input=x, param_attr=ParamAttr(name='w'), size=1, act=LinearActivation(), bias_attr=ParamAttr(name='b'))
     # 计算误差函数,即  ȳ 和真实 y 之间的距离
-    cost = mse_cost(input= ȳ, label=y)
+    cost = square_error_cost(input= ȳ, label=y)
     outputs(cost)
 
 
@@ -69,7 +69,7 @@ PaddlePaddle是源于百度的一个深度学习平台。这份简短的介绍
     
     - **数据层**:数据层 `data_layer` 是神经网络的入口,它读入数据并将它们传输到接下来的网络层。这里数据层有两个,分别对应于变量 `x` 和 `y`。
     - **全连接层**:全连接层 `fc_layer` 是基础的计算单元,这里利用它建模变量之间的线性关系。计算单元是神经网络的核心,PaddlePaddle支持大量的计算单元和任意深度的网络连接,从而可以拟合任意的函数来学习复杂的数据关系。
-    - **回归误差代价层**:回归误差代价层 `mse_cost` 是众多误差代价函数层的一种,它们在训练过程作为网络的出口,用来计算模型的误差,是模型参数优化的目标函数。
+    - **回归误差代价层**:回归误差代价层 `square_error_cost` 是众多误差代价函数层的一种,它们在训练过程作为网络的出口,用来计算模型的误差,是模型参数优化的目标函数。
 
 定义了网络结构并保存为 `trainer_config.py` 之后,运行以下训练命令:
 
diff --git a/doc/getstarted/concepts/use_concepts_cn.rst b/doc/getstarted/concepts/use_concepts_cn.rst
index 25bf7ff1d0..c243083794 100644
--- a/doc/getstarted/concepts/use_concepts_cn.rst
+++ b/doc/getstarted/concepts/use_concepts_cn.rst
@@ -83,7 +83,7 @@ PaddlePaddle支持不同类型的输入数据,主要包括四种类型,和
     y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())
     cost = paddle.layer.square_error_cost(input=y_predict, label=y)
 
-其中,x与y为之前描述的输入层;而y_predict是接收x作为输入,接上一个全连接层;cost接收y_predict与y作为输入,接上均方误差层。
+其中,x与y为之前描述的输入层;而y_predict是接收x作为输入,接上一个全连接层;cost接收y_predict与y作为输入,接上平方误差层。
 
 最后一层cost中记录了神经网络的所有拓扑结构,通过组合不同的layer,我们即可完成神经网络的搭建。
 
diff --git a/python/paddle/v2/tests/test_layer.py b/python/paddle/v2/tests/test_layer.py
index 783a0ca85d..de932ad715 100644
--- a/python/paddle/v2/tests/test_layer.py
+++ b/python/paddle/v2/tests/test_layer.py
@@ -134,8 +134,9 @@ class CostLayerTest(unittest.TestCase):
         cost3 = layer.cross_entropy_cost(input=inference, label=label)
         cost4 = layer.cross_entropy_with_selfnorm_cost(
             input=inference, label=label)
-        cost5 = layer.mse_cost(input=inference, label=label)
-        cost6 = layer.mse_cost(input=inference, label=label, weight=weight)
+        cost5 = layer.square_error_cost(input=inference, label=label)
+        cost6 = layer.square_error_cost(
+            input=inference, label=label, weight=weight)
         cost7 = layer.multi_binary_label_cross_entropy_cost(
             input=inference, label=label)
         cost8 = layer.rank_cost(left=score, right=score, label=score)

From 740c8ba12a29418eefeb22a843bebb1781f300fe Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Mon, 4 Sep 2017 16:40:23 +0800
Subject: [PATCH 45/72] remove scatter_op.cu/gather_op.cu as they support
 only_cpu now

---
 paddle/operators/CMakeLists.txt | 24 ++++++++++++++++--------
 paddle/operators/gather_op.cu   | 20 --------------------
 paddle/operators/scatter_op.cu  | 20 --------------------
 3 files changed, 16 insertions(+), 48 deletions(-)
 delete mode 100644 paddle/operators/gather_op.cu
 delete mode 100644 paddle/operators/scatter_op.cu

diff --git a/paddle/operators/CMakeLists.txt b/paddle/operators/CMakeLists.txt
index d85c3d575a..90185101c4 100644
--- a/paddle/operators/CMakeLists.txt
+++ b/paddle/operators/CMakeLists.txt
@@ -46,15 +46,20 @@ endfunction()
 
 add_subdirectory(math)
 
-list(REMOVE_ITEM GENERAL_OPS
-     net_op
-     identity_op
-     minus_op
-     mul_op
-     recurrent_op
-     scale_op)
+set(ONLYCPU_OPS
+    net_op
+    gather_op
+    scatter_op)
+foreach(src ${ONLYCPU_OPS})
+    op_library(${src} SRCS ${src}.cc)
+endforeach()
 
-op_library(net_op SRCS net_op.cc)
+set(DEPS_OPS
+    identity_op
+    minus_op
+    mul_op
+    recurrent_op
+    scale_op)
 op_library(identity_op SRCS identity_op.cc DEPS scale_op)
 op_library(minus_op SRCS minus_op.cc minus_op.cu DEPS scale_op)
 op_library(mul_op SRCS mul_op.cc mul_op.cu DEPS math_function)
@@ -62,6 +67,9 @@ op_library(recurrent_op SRCS recurrent_op.cc rnn/recurrent_op_utils.cc
   DEPS framework_proto tensor operator net_op)
 op_library(scale_op SRCS scale_op.cc scale_op.cu DEPS net_op)
 
+list(REMOVE_ITEM GENERAL_OPS
+     ${ONLYCPU_OPS}
+     ${DEPS_OPS})
 foreach(src ${GENERAL_OPS})
     op_library(${src} SRCS ${src}.cc ${src}.cu)
 endforeach()
diff --git a/paddle/operators/gather_op.cu b/paddle/operators/gather_op.cu
deleted file mode 100644
index 3f04a7b3f8..0000000000
--- a/paddle/operators/gather_op.cu
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License. */
-
-#define EIGEN_USE_GPU
-#include "paddle/operators/gather_op.h"
-
-namespace ops = paddle::operators;
-REGISTER_OP_GPU_KERNEL(gather,
-                       ops::GatherOpKernel<paddle::platform::GPUPlace, float>);
diff --git a/paddle/operators/scatter_op.cu b/paddle/operators/scatter_op.cu
deleted file mode 100644
index 6716b47883..0000000000
--- a/paddle/operators/scatter_op.cu
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License. */
-
-#define EIGEN_USE_GPU
-#include "paddle/operators/scatter_op.h"
-
-namespace ops = paddle::operators;
-REGISTER_OP_GPU_KERNEL(scatter,
-                       ops::ScatterOpKernel<paddle::platform::GPUPlace, float>);

From a523bea8e585bd63f4167e012a05b03ad435b574 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 20:40:33 +0800
Subject: [PATCH 46/72] fix getType.

---
 paddle/gserver/evaluators/CTCErrorEvaluator.cpp |  8 +++++---
 paddle/gserver/evaluators/ChunkEvaluator.cpp    |  8 +++++++-
 paddle/gserver/evaluators/Evaluator.h           | 13 ++++++++-----
 3 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/paddle/gserver/evaluators/CTCErrorEvaluator.cpp b/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
index 928c77a088..92087fa32b 100644
--- a/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
+++ b/paddle/gserver/evaluators/CTCErrorEvaluator.cpp
@@ -21,7 +21,7 @@ namespace paddle {
 /**
  * calculate sequence-to-sequence edit distance
  */
-class CTCErrorEvaluator : public NotGetableEvaluator {
+class CTCErrorEvaluator : public Evaluator {
 private:
   MatrixPtr outActivations_;
   int numTimes_, numClasses_, numSequences_, blank_;
@@ -307,8 +307,10 @@ public:
   }
 
   std::string getType(const std::string& name, Error* err) const {
-    getValue(name, err);
-    if (!err->isOK()) return "";
+    this->getValue(name, err);
+    if (!err->isOK()) {
+      return "";
+    }
     return "ctc_edit_distance";
   }
 };
diff --git a/paddle/gserver/evaluators/ChunkEvaluator.cpp b/paddle/gserver/evaluators/ChunkEvaluator.cpp
index 1658282f3a..a2ab15eede 100644
--- a/paddle/gserver/evaluators/ChunkEvaluator.cpp
+++ b/paddle/gserver/evaluators/ChunkEvaluator.cpp
@@ -268,7 +268,13 @@ public:
   }
 
   // get type of evaluator
-  std::string getTypeImpl() const { return "chunk"; }
+  std::string getType(const std::string& name, Error* err) const {
+    this->getValue(name, err);
+    if (!err->isOK()) {
+      return "";
+    }
+    return "chunk";
+  }
 
 private:
   void storeLocalValues() const {
diff --git a/paddle/gserver/evaluators/Evaluator.h b/paddle/gserver/evaluators/Evaluator.h
index b114500e2b..90203553e0 100644
--- a/paddle/gserver/evaluators/Evaluator.h
+++ b/paddle/gserver/evaluators/Evaluator.h
@@ -211,6 +211,7 @@ public:
     *err = Error("Not implemented");
     return .0f;
   }
+
   std::string getType(const std::string& name, Error* err) const {
     *err = Error("Not implemented");
     return "";
@@ -331,6 +332,7 @@ private:
 protected:
   std::string getTypeImpl() const;
 };
+
 /**
  * @brief precision, recall and f1 score Evaluator
  * \f[
@@ -358,6 +360,12 @@ public:
 
   virtual void distributeEval(ParameterClient2* client);
 
+  void getNames(std::vector<std::string>* names);
+
+  real getValue(const std::string& name, Error* err) const;
+
+  std::string getType(const std::string& name, Error* err) const;
+
   struct StatsInfo {
     /// numbers of true positives
     double TP;
@@ -428,11 +436,6 @@ private:
   mutable std::unordered_map<std::string, real> values_;
 
   void storeLocalValues() const;
-  // Evaluator interface
-public:
-  void getNames(std::vector<std::string>* names);
-  real getValue(const std::string& name, Error* err) const;
-  std::string getType(const std::string& name, Error* err) const;
 };
 
 /*

From 7c785426e4f15c7ef3a6659e1d32385ed5e48273 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Mon, 4 Sep 2017 22:04:08 +0800
Subject: [PATCH 47/72] add missing protostr for sub_nested_seq_layer.

---
 ..._layers.protostr => test_sub_nested_seq_select_layer.protostr} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename python/paddle/trainer_config_helpers/tests/configs/protostr/{test_seq_select_layers.protostr => test_sub_nested_seq_select_layer.protostr} (100%)

diff --git a/python/paddle/trainer_config_helpers/tests/configs/protostr/test_seq_select_layers.protostr b/python/paddle/trainer_config_helpers/tests/configs/protostr/test_sub_nested_seq_select_layer.protostr
similarity index 100%
rename from python/paddle/trainer_config_helpers/tests/configs/protostr/test_seq_select_layers.protostr
rename to python/paddle/trainer_config_helpers/tests/configs/protostr/test_sub_nested_seq_select_layer.protostr

From 447033296d927dd0b0c1240e2ecccaa667eb0fe8 Mon Sep 17 00:00:00 2001
From: dangqingqing <dangqingqing@baidu.com>
Date: Mon, 4 Sep 2017 22:29:34 +0800
Subject: [PATCH 48/72] Make some operator correctly handle gradients for multi
 inputs.

---
 paddle/operators/mul_op.cc                    |  4 +--
 paddle/operators/mul_op.h                     | 36 ++++++++++---------
 paddle/operators/rowwise_add_op.cc            |  6 ++--
 paddle/operators/rowwise_add_op.h             | 24 +++++++------
 paddle/operators/scatter_op.cc                |  4 +--
 paddle/operators/scatter_op.h                 | 10 +++---
 .../v2/framework/tests/gradient_checker.py    | 25 +++++++++++--
 .../paddle/v2/framework/tests/test_mul_op.py  |  3 +-
 8 files changed, 72 insertions(+), 40 deletions(-)

diff --git a/paddle/operators/mul_op.cc b/paddle/operators/mul_op.cc
index 8d0f59745f..603dc7f4bd 100644
--- a/paddle/operators/mul_op.cc
+++ b/paddle/operators/mul_op.cc
@@ -75,8 +75,8 @@ class MulOpGrad : public framework::OperatorWithKernel {
     PADDLE_ENFORCE(y_dims[1] == out_dims[1],
                    "Out@GRAD M X N must equal to Y dims 1, N ");
 
-    x_grad->Resize(x_dims);
-    y_grad->Resize(y_dims);
+    if (x_grad) x_grad->Resize(x_dims);
+    if (y_grad) y_grad->Resize(y_dims);
   }
 };
 
diff --git a/paddle/operators/mul_op.h b/paddle/operators/mul_op.h
index 8facc02814..66ed2f81c7 100644
--- a/paddle/operators/mul_op.h
+++ b/paddle/operators/mul_op.h
@@ -31,13 +31,13 @@ template <typename Place, typename T>
 class MulKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& context) const override {
-    auto* X = context.Input<Tensor>("X");
-    auto* Y = context.Input<Tensor>("Y");
-    auto* Z = context.Output<Tensor>("Out");
-    Z->mutable_data<T>(context.GetPlace());
+    auto* x = context.Input<Tensor>("X");
+    auto* y = context.Input<Tensor>("Y");
+    auto* z = context.Output<Tensor>("Out");
+    z->mutable_data<T>(context.GetPlace());
     auto* device_context =
         const_cast<platform::DeviceContext*>(context.device_context_);
-    math::matmul<Place, T>(*X, false, *Y, false, 1, Z, 0, device_context);
+    math::matmul<Place, T>(*x, false, *y, false, 1, z, 0, device_context);
   }
 };
 
@@ -45,20 +45,24 @@ template <typename Place, typename T>
 class MulGradKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& ctx) const override {
-    auto* X = ctx.Input<Tensor>("X");
-    auto* Y = ctx.Input<Tensor>("Y");
-    auto* dOut = ctx.Input<Tensor>(framework::GradVarName("Out"));
+    auto* x = ctx.Input<Tensor>("X");
+    auto* y = ctx.Input<Tensor>("Y");
+    auto* dout = ctx.Input<Tensor>(framework::GradVarName("Out"));
 
-    auto* dX = ctx.Output<Tensor>(framework::GradVarName("X"));
-    auto* dY = ctx.Output<Tensor>(framework::GradVarName("Y"));
-    dX->mutable_data<T>(ctx.GetPlace());
-    dY->mutable_data<T>(ctx.GetPlace());
+    auto* dx = ctx.Output<Tensor>(framework::GradVarName("X"));
+    auto* dy = ctx.Output<Tensor>(framework::GradVarName("Y"));
     auto* device_context =
         const_cast<platform::DeviceContext*>(ctx.device_context_);
-    // dX = dOut * Y'. dX: M x K, dOut : M x N, Y : K x N
-    math::matmul<Place, T>(*dOut, false, *Y, true, 1, dX, 0, device_context);
-    // dY = X' * dOut. dY: K x N, dOut : M x N, X : M x K
-    math::matmul<Place, T>(*X, true, *dOut, false, 1, dY, 0, device_context);
+    if (dx) {
+      // dx = dout * y'. dx: M x K, dout : M x N, y : K x N
+      dx->mutable_data<T>(ctx.GetPlace());
+      math::matmul<Place, T>(*dout, false, *y, true, 1, dx, 0, device_context);
+    }
+    if (dy) {
+      dy->mutable_data<T>(ctx.GetPlace());
+      // dy = x' * dout. dy K x N, dout : M x N, x : M x K
+      math::matmul<Place, T>(*x, true, *dout, false, 1, dy, 0, device_context);
+    }
   }
 };
 
diff --git a/paddle/operators/rowwise_add_op.cc b/paddle/operators/rowwise_add_op.cc
index 63de91254f..a9dfba3e95 100644
--- a/paddle/operators/rowwise_add_op.cc
+++ b/paddle/operators/rowwise_add_op.cc
@@ -64,8 +64,10 @@ class RowwiseAddGradOp : public framework::OperatorWithKernel {
     auto dims0 = ctx.Input<Tensor>("X")->dims();
     auto dims1 = ctx.Input<Tensor>("b")->dims();
     PADDLE_ENFORCE_EQ(1, dims1.size(), "b dims should be 1")
-    ctx.Output<Tensor>(framework::GradVarName("X"))->Resize(dims0);
-    ctx.Output<Tensor>(framework::GradVarName("b"))->Resize(dims1);
+    auto *dx = ctx.Output<Tensor>(framework::GradVarName("X"));
+    auto *db = ctx.Output<Tensor>(framework::GradVarName("b"));
+    if (dx) dx->Resize(dims0);
+    if (db) db->Resize(dims1);
   }
 };
 
diff --git a/paddle/operators/rowwise_add_op.h b/paddle/operators/rowwise_add_op.h
index 1cbd8bb31a..4e926d9f29 100644
--- a/paddle/operators/rowwise_add_op.h
+++ b/paddle/operators/rowwise_add_op.h
@@ -51,20 +51,24 @@ template <typename Place, typename T>
 class RowwiseAddGradKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& context) const override {
-    auto* dOut = context.Input<Tensor>(framework::GradVarName("Out"));
-    auto* dX = context.Output<Tensor>(framework::GradVarName("X"));
+    auto* dout = context.Input<Tensor>(framework::GradVarName("Out"));
+    auto* dx = context.Output<Tensor>(framework::GradVarName("X"));
     auto* db = context.Output<Tensor>(framework::GradVarName("b"));
-    dX->mutable_data<T>(context.GetPlace());
-    db->mutable_data<T>(context.GetPlace());
 
-    auto OutGrad = EigenMatrix<T>::From(*dOut);
+    auto out_grad = EigenMatrix<T>::From(*dout);
     auto place = context.GetEigenDevice<Place>();
-    EigenMatrix<T>::From(*dX).device(place) = OutGrad;
+    if (dx) {
+      dx->mutable_data<T>(context.GetPlace());
+      EigenMatrix<T>::From(*dx).device(place) = out_grad;
+    }
 
-    // https://eigen.tuxfamily.org/dox/unsupported/TensorBase_8h_source.html
-    // colwise add
-    Eigen::array<int, 1> dims{{0}}; /* dimension to reduce */
-    EigenVector<T>::Flatten(*db).device(place) = OutGrad.sum(dims);
+    if (db) {
+      db->mutable_data<T>(context.GetPlace());
+      // https://eigen.tuxfamily.org/dox/unsupported/TensorBase_8h_source.html
+      // colwise add
+      Eigen::array<int, 1> dims{{0}}; /* dimension to reduce */
+      EigenVector<T>::Flatten(*db).device(place) = out_grad.sum(dims);
+    }
   }
 };
 }  // namespace operators
diff --git a/paddle/operators/scatter_op.cc b/paddle/operators/scatter_op.cc
index 35c185ad80..9b5068f07c 100644
--- a/paddle/operators/scatter_op.cc
+++ b/paddle/operators/scatter_op.cc
@@ -50,8 +50,8 @@ class ScatterGradOp : public framework::OperatorWithKernel {
     auto *dRef = ctx.Output<Tensor>(framework::GradVarName("Ref"));
     auto *Ref = ctx.Input<Tensor>("Ref");
 
-    dRef->Resize(Ref->dims());
-    dUpdates->Resize(Updates->dims());
+    if (dRef) dRef->Resize(Ref->dims());
+    if (dUpdates) dUpdates->Resize(Updates->dims());
   }
 };
 
diff --git a/paddle/operators/scatter_op.h b/paddle/operators/scatter_op.h
index e9595638a8..7551480211 100644
--- a/paddle/operators/scatter_op.h
+++ b/paddle/operators/scatter_op.h
@@ -49,10 +49,12 @@ class ScatterGradientOpKernel : public framework::OpKernel {
     auto *dOut = ctx.Input<Tensor>(framework::GradVarName("Out"));
 
     // In place gradient: dRef = dO
-    dRef->ShareDataWith<T>(*dOut);
-    dUpdates->mutable_data<T>(ctx.GetPlace());
-    // Gradient by Gather: dUpdates += dO[Index]
-    Gather<T>(ctx.GetPlace(), dOut, Index, dUpdates);
+    if (dRef) dRef->ShareDataWith<T>(*dOut);
+    if (dUpdates) {
+      dUpdates->mutable_data<T>(ctx.GetPlace());
+      // Gradient by Gather: dUpdates += dO[Index]
+      Gather<T>(ctx.GetPlace(), dOut, Index, dUpdates);
+    }
   }
 };
 
diff --git a/python/paddle/v2/framework/tests/gradient_checker.py b/python/paddle/v2/framework/tests/gradient_checker.py
index 518f828bac..82ab7ad39b 100644
--- a/python/paddle/v2/framework/tests/gradient_checker.py
+++ b/python/paddle/v2/framework/tests/gradient_checker.py
@@ -286,6 +286,9 @@ class GradientChecker(unittest.TestCase):
         for no_grad in no_grad_set:
             if no_grad not in in_names:
                 raise ValueError("no_grad should be in in_names")
+            if name in inputs_to_check:
+                raise ValueError("no_grad should not be in inputs_to_check")
+
         backward_op = core.Operator.backward(forward_op, no_grad_set)
 
         places = [core.CPUPlace()]
@@ -301,9 +304,25 @@ class GradientChecker(unittest.TestCase):
 
         check_names = [grad_var_name(name) for name in inputs_to_check]
         for place in places:
-            # get analytical gradients according to different device
-            analytic_grads = self.__get_gradient(forward_op, backward_op,
-                                                 input_vars, check_names, place)
+            # analytic_grads = self.__get_gradient(forward_op, backward_op,
+            #   input_vars, check_names, place)
+            # In fact, the above two lines can be used to replace following
+            # codes. But most of the gradient operators need to handle the case
+            # where one of more of the gradient of the input is not needed.
+            # We change the unit test framework to explicitly test whether
+            # the operator correctly handles this through follow codes.
+            # In addtion, if all the inputs have no gradients, the NOP operator
+            # will be returned by core.Operator.backward(). The following codes
+            # do not test this case.
+            analytic_grads = []
+            for name in inputs_to_check:
+                no_grads = [name for name in no_grad_set]
+                no_grads.extend(filter(lambda x: x != name, inputs_to_check))
+                backward_op = core.Operator.backward(forward_op, set(no_grads))
+                # get analytical gradients according to different device
+                analytic_grads.extend(
+                    self.__get_gradient(forward_op, backward_op, input_vars,
+                                        [grad_var_name(name)], place))
             self.__assert_is_close(numeric_grads, analytic_grads, check_names,
                                    max_relative_error,
                                    "Gradient Check On %s" % str(place))
diff --git a/python/paddle/v2/framework/tests/test_mul_op.py b/python/paddle/v2/framework/tests/test_mul_op.py
index ee0d81a64e..81371b1d11 100644
--- a/python/paddle/v2/framework/tests/test_mul_op.py
+++ b/python/paddle/v2/framework/tests/test_mul_op.py
@@ -16,13 +16,14 @@ class TestMulOp(unittest.TestCase):
         self.outputs = {'Out': np.dot(self.inputs['X'], self.inputs['Y'])}
 
 
-class MulGradOpTest(GradientChecker):
+class TestMulGradOp(GradientChecker):
     def test_mul(self):
         op = create_op("mul")
         inputs = {
             'X': np.random.random((32, 84)).astype("float32"),
             'Y': np.random.random((84, 100)).astype("float32")
         }
+        self.compare_grad(op, inputs)
         # mul op will enlarge the relative error
         self.check_grad(
             op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.5)

From 9a3c69c268d65c340ed5d0ae9aee1a90ca50ee84 Mon Sep 17 00:00:00 2001
From: fengjiayi <fengjiayi@baidu.com>
Date: Mon, 4 Sep 2017 10:45:11 -0700
Subject: [PATCH 49/72] Revert "Remove `grad_op_type` in `REGISTER_OP`"

---
 doc/howto/dev/new_op_cn.md               |  4 ++--
 paddle/framework/backward.md             |  2 +-
 paddle/framework/backward_test.cc        | 12 +++++++-----
 paddle/framework/grad_op_builder_test.cc |  4 ++--
 paddle/framework/op_registry.h           | 25 ++++++++++++++----------
 paddle/operators/add_op.cc               |  2 +-
 paddle/operators/cross_entropy_op.cc     |  3 ++-
 paddle/operators/gather_op.cc            |  3 ++-
 paddle/operators/lookup_table_op.cc      |  2 +-
 paddle/operators/mean_op.cc              |  2 +-
 paddle/operators/minus_op.cc             |  3 ++-
 paddle/operators/mul_op.cc               |  2 +-
 paddle/operators/rowwise_add_op.cc       |  2 +-
 paddle/operators/scale_op.cc             |  2 +-
 paddle/operators/scatter_op.cc           |  3 ++-
 paddle/operators/sigmoid_op.cc           |  3 ++-
 paddle/operators/softmax_op.cc           |  3 ++-
 17 files changed, 45 insertions(+), 32 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index ec79b7f42b..7f8da2da5a 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -178,13 +178,13 @@ class MulKernel : public framework::OpKernel {
 
 ```c++
 namespace ops = paddle::operators;
-REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, ops::MulOpGrad);
+REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
 REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mul_grad,
               ops::MulGradKernel<paddle::platform::CPUPlace, float>);
 ```
     
-  - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,并且注册`ops::MulOpGrad`为其反向Op。
+  - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,注册`ops::MulOpGrad`,类型名为`mul_grad`,
   - `REGISTER_OP_WITHOUT_GRADIENT` : 用于注册没有反向的Op。
   - `REGISTER_OP_CPU_KERNEL` :注册`ops::MulKernel`类,并特化模板参数为`paddle::platform::CPUPlace`和`float`类型,同理,注册`ops::MulKernel`类。
 
diff --git a/paddle/framework/backward.md b/paddle/framework/backward.md
index 9500c92a26..8aa6728a95 100644
--- a/paddle/framework/backward.md
+++ b/paddle/framework/backward.md
@@ -18,7 +18,7 @@ A backward network is built up with several backward operators. Backward operato
 For example, we have got a `mul_op`, and we can register it's information and corresponding backward operator by the following macro:
 
 ```cpp
-REGISTER_OP(mul, MulOp, MulOpMaker, MulOpGrad);
+REGISTER_OP(mul, MulOp, MulOpMaker, mul_grad, MulOpGrad);
 ```
 
 `mul` is the operator's type. `MulOp` and `MulOpMaker` are the operator class and the operator maker class respectively.
diff --git a/paddle/framework/backward_test.cc b/paddle/framework/backward_test.cc
index bf8b11e5f5..ad8003420d 100644
--- a/paddle/framework/backward_test.cc
+++ b/paddle/framework/backward_test.cc
@@ -148,14 +148,16 @@ class AddOpMaker : public OpProtoAndCheckerMaker {
 namespace f = paddle::framework;
 namespace ops = paddle::operators;
 using EnforceNotMet = paddle::platform::EnforceNotMet;
-REGISTER_OP(rowwise_add, f::NOP, f::RowWiseAddOpMaker, f::NOP);
-REGISTER_OP(mul, f::NOP, f::MulOpMaker, f::NOP);
-REGISTER_OP(sigmoid, f::NOP, f::SigmoidOpMaker, f::NOP);
+REGISTER_OP(rowwise_add, f::NOP, f::RowWiseAddOpMaker, rowwise_add_grad,
+            f::NOP);
+REGISTER_OP(mul, f::NOP, f::MulOpMaker, mul_grad, f::NOP);
+REGISTER_OP(sigmoid, f::NOP, f::SigmoidOpMaker, sigmoid_grad, f::NOP);
 REGISTER_OP_WITHOUT_GRADIENT(nograd, f::NOP, f::NoGradOpMaker);
 REGISTER_OP_WITHOUT_GRADIENT(fill_zeros_like, f::NOP, f::FillZeroOpMaker);
-REGISTER_OP(add, f::NOP, f::AddOpMaker, f::NOP);
+REGISTER_OP(add, f::NOP, f::AddOpMaker, add_grad, f::NOP);
 REGISTER_OP_WITHOUT_GRADIENT(fc, f::FcOp, f::FcOpMaker);
-REGISTER_OP(many_output_op, f::NOP, f::ManyOutputOpMaker, f::NOP);
+REGISTER_OP(many_output_op, f::NOP, f::ManyOutputOpMaker, many_output_op_grad,
+            f::NOP);
 
 TEST(Backward, simple_op_grad) {
   auto fwd = f::OpRegistry::CreateOp(
diff --git a/paddle/framework/grad_op_builder_test.cc b/paddle/framework/grad_op_builder_test.cc
index 8a817a3e13..902c2655e9 100644
--- a/paddle/framework/grad_op_builder_test.cc
+++ b/paddle/framework/grad_op_builder_test.cc
@@ -54,8 +54,8 @@ TEST(GradOpBuilder, AddTwo) {
   EXPECT_EQ(grad_add_op->Output(f::GradVarName("Y")), f::GradVarName("y"));
 }
 
-REGISTER_OP(mult_io, f::NOP, f::MutiInOutOpMaker, f::NOP);
-REGISTER_OP(io_ignored, f::NOP, f::IOIgnoredOpMaker, f::NOP);
+REGISTER_OP(mult_io, f::NOP, f::MutiInOutOpMaker, mult_io_grad, f::NOP);
+REGISTER_OP(io_ignored, f::NOP, f::IOIgnoredOpMaker, io_ignored_grad, f::NOP);
 
 TEST(GradOpBuilder, MutiInOut) {
   std::shared_ptr<f::OperatorBase> test_op(f::OpRegistry::CreateOp(
diff --git a/paddle/framework/op_registry.h b/paddle/framework/op_registry.h
index 64c7f23ab6..2d09cde41e 100644
--- a/paddle/framework/op_registry.h
+++ b/paddle/framework/op_registry.h
@@ -33,7 +33,8 @@ namespace framework {
 class OpRegistry {
  public:
   template <typename OpType, typename ProtoMakerType, typename GradOpType>
-  static void RegisterOp(const std::string& op_type) {
+  static void RegisterOp(const std::string& op_type,
+                         const std::string& grad_op_type) {
     PADDLE_ENFORCE(!OpInfoMap::Instance().Has(op_type),
                    "'%s' is registered more than once.", op_type);
     OpInfo op_info;
@@ -42,9 +43,9 @@ class OpRegistry {
         const VariableNameMap& outputs, const AttributeMap& attrs) {
       return new OpType(type, inputs, outputs, attrs);
     };
+    op_info.grad_op_type_ = grad_op_type;
     if (std::type_index(typeid(ProtoMakerType)) !=
         std::type_index(typeid(NOPMaker))) {
-      op_info.grad_op_type_ = op_type + "_grad";
       op_info.proto_ = new OpProto;
       op_info.checker_ = new OpAttrChecker;
       auto maker = ProtoMakerType(op_info.proto_, op_info.checker_);
@@ -54,14 +55,15 @@ class OpRegistry {
           op_info.proto_->IsInitialized(),
           "Fail to initialize %s's OpProto, because %s is not initialized",
           op_type, op_info.proto_->InitializationErrorString());
-      // register gradient op
-      RegisterOp<GradOpType, NOPMaker, NOP>(op_info.grad_op_type_);
     } else {
-      op_info.grad_op_type_ = "";
       op_info.proto_ = nullptr;
       op_info.checker_ = nullptr;
     }
     OpInfoMap::Instance().Insert(op_type, op_info);
+    // register gradient op
+    if (!grad_op_type.empty()) {
+      RegisterOp<GradOpType, NOPMaker, NOP>(grad_op_type, "");
+    }
   }
 
   static std::unique_ptr<OperatorBase> CreateOp(const std::string& type,
@@ -90,8 +92,10 @@ class Registrar {
 template <typename OpType, typename ProtoMakerType, typename GradOpType>
 class OpRegistrar : public Registrar {
  public:
-  explicit OpRegistrar(const char* op_type) {
-    OpRegistry::RegisterOp<OpType, ProtoMakerType, GradOpType>(op_type);
+  explicit OpRegistrar(const char* op_type) { OpRegistrar(op_type, ""); }
+  OpRegistrar(const char* op_type, const char* grad_op_type) {
+    OpRegistry::RegisterOp<OpType, ProtoMakerType, GradOpType>(op_type,
+                                                               grad_op_type);
   }
 };
 
@@ -117,7 +121,8 @@ class OpKernelRegistrar : public Registrar {
 /**
  * Macro to register Operator.
  */
-#define REGISTER_OP(op_type, op_class, op_maker_class, grad_op_class)         \
+#define REGISTER_OP(op_type, op_class, op_maker_class, grad_op_type,          \
+                    grad_op_class)                                            \
   STATIC_ASSERT_GLOBAL_NAMESPACE(                                             \
       __reg_op__##op_type, "REGISTER_OP must be called in global namespace"); \
   class _OpClass_##op_type##_ : public op_class {                             \
@@ -132,14 +137,14 @@ class OpKernelRegistrar : public Registrar {
   };                                                                          \
   static ::paddle::framework::OpRegistrar<                                    \
       _OpClass_##op_type##_, op_maker_class, _OpGradClass_##op_type##_>       \
-      __op_registrar_##op_type##__(#op_type);                                 \
+      __op_registrar_##op_type##__(#op_type, #grad_op_type);                  \
   int TouchOpRegistrar_##op_type() {                                          \
     __op_registrar_##op_type##__.Touch();                                     \
     return 0;                                                                 \
   }
 
 #define REGISTER_OP_WITHOUT_GRADIENT(op_type, op_class, op_maker_class) \
-  REGISTER_OP(op_type, op_class, op_maker_class, ::paddle::framework::NOP)
+  REGISTER_OP(op_type, op_class, op_maker_class, , ::paddle::framework::NOP)
 
 /**
  * Macro to register OperatorKernel.
diff --git a/paddle/operators/add_op.cc b/paddle/operators/add_op.cc
index 6384d8c8ce..8ab748ed71 100644
--- a/paddle/operators/add_op.cc
+++ b/paddle/operators/add_op.cc
@@ -57,7 +57,7 @@ class AddOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(add_two, ops::AddOp, ops::AddOpMaker, ops::AddOpGrad);
+REGISTER_OP(add_two, ops::AddOp, ops::AddOpMaker, add_two_grad, ops::AddOpGrad);
 
 REGISTER_OP_CPU_KERNEL(add_two,
                        ops::AddKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/cross_entropy_op.cc b/paddle/operators/cross_entropy_op.cc
index ac76326262..ab1e1c101a 100644
--- a/paddle/operators/cross_entropy_op.cc
+++ b/paddle/operators/cross_entropy_op.cc
@@ -67,7 +67,8 @@ OnehotCrossEntropy Operator.
 
 namespace ops = paddle::operators;
 REGISTER_OP(onehot_cross_entropy, ops::OnehotCrossEntropyOp,
-            ops::OnehotCrossEntropyOpMaker, ops::OnehotCrossEntropyGradientOp);
+            ops::OnehotCrossEntropyOpMaker, onehot_cross_entropy_grad,
+            ops::OnehotCrossEntropyGradientOp);
 REGISTER_OP_CPU_KERNEL(onehot_cross_entropy,
                        ops::OnehotCrossEntropyOpKernel<float>);
 REGISTER_OP_CPU_KERNEL(onehot_cross_entropy_grad,
diff --git a/paddle/operators/gather_op.cc b/paddle/operators/gather_op.cc
index 07fa704824..123bed296c 100644
--- a/paddle/operators/gather_op.cc
+++ b/paddle/operators/gather_op.cc
@@ -63,7 +63,8 @@ Out = X[Index]
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(gather, ops::GatherOp, ops::GatherOpMaker, ops::GatherGradOp);
+REGISTER_OP(gather, ops::GatherOp, ops::GatherOpMaker, gather_grad,
+            ops::GatherGradOp);
 REGISTER_OP_CPU_KERNEL(gather,
                        ops::GatherOpKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/lookup_table_op.cc b/paddle/operators/lookup_table_op.cc
index c3108ba8ec..94d40890a7 100644
--- a/paddle/operators/lookup_table_op.cc
+++ b/paddle/operators/lookup_table_op.cc
@@ -66,7 +66,7 @@ class LookupTableOpGrad : public framework::OperatorWithKernel {
 
 namespace ops = paddle::operators;
 REGISTER_OP(lookup_table, ops::LookupTableOp, ops::LookupTableOpMaker,
-            ops::LookupTableOpGrad);
+            lookup_table_grad, ops::LookupTableOpGrad);
 
 REGISTER_OP_CPU_KERNEL(lookup_table, ops::LookupTableKernel<float>);
 REGISTER_OP_CPU_KERNEL(lookup_table_grad, ops::LookupTableGradKernel<float>);
diff --git a/paddle/operators/mean_op.cc b/paddle/operators/mean_op.cc
index e66e0abb25..d3d0e55a67 100644
--- a/paddle/operators/mean_op.cc
+++ b/paddle/operators/mean_op.cc
@@ -54,7 +54,7 @@ class MeanGradOp : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(mean, ops::MeanOp, ops::MeanOpMaker, ops::MeanGradOp);
+REGISTER_OP(mean, ops::MeanOp, ops::MeanOpMaker, mean_grad, ops::MeanGradOp);
 REGISTER_OP_CPU_KERNEL(mean,
                        ops::MeanKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mean_grad,
diff --git a/paddle/operators/minus_op.cc b/paddle/operators/minus_op.cc
index b4afebcd97..1eee9644ba 100644
--- a/paddle/operators/minus_op.cc
+++ b/paddle/operators/minus_op.cc
@@ -81,6 +81,7 @@ class MinusGradOp : public NetOp {
 USE_OP(scale);
 USE_OP_ITSELF(identity);
 namespace ops = paddle::operators;
-REGISTER_OP(minus, ops::MinusOp, ops::MinusOpMaker, ops::MinusGradOp<float>);
+REGISTER_OP(minus, ops::MinusOp, ops::MinusOpMaker, minus_grad,
+            ops::MinusGradOp<float>);
 REGISTER_OP_CPU_KERNEL(minus,
                        ops::MinusKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/mul_op.cc b/paddle/operators/mul_op.cc
index 8d0f59745f..5b8b5f6c11 100644
--- a/paddle/operators/mul_op.cc
+++ b/paddle/operators/mul_op.cc
@@ -84,7 +84,7 @@ class MulOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, ops::MulOpGrad);
+REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
 REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mul_grad,
                        ops::MulGradKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/rowwise_add_op.cc b/paddle/operators/rowwise_add_op.cc
index 63de91254f..6825dce332 100644
--- a/paddle/operators/rowwise_add_op.cc
+++ b/paddle/operators/rowwise_add_op.cc
@@ -74,7 +74,7 @@ class RowwiseAddGradOp : public framework::OperatorWithKernel {
 
 namespace ops = paddle::operators;
 REGISTER_OP(rowwise_add, ops::RowwiseAddOp, ops::RowwiseAddOpMaker,
-            ops::RowwiseAddGradOp);
+            rowwise_add_grad, ops::RowwiseAddGradOp);
 REGISTER_OP_CPU_KERNEL(
     rowwise_add, ops::RowwiseAddKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/scale_op.cc b/paddle/operators/scale_op.cc
index 4e039688d4..8e96a74c94 100644
--- a/paddle/operators/scale_op.cc
+++ b/paddle/operators/scale_op.cc
@@ -97,7 +97,7 @@ class IdentityOp : public NetOp {
 
 namespace ops = paddle::operators;
 
-REGISTER_OP(scale, ops::ScaleOp, ops::ScaleOpMaker<float>,
+REGISTER_OP(scale, ops::ScaleOp, ops::ScaleOpMaker<float>, scale_grad,
             ops::ScaleGradOp<float>);
 REGISTER_OP_CPU_KERNEL(scale,
                        ops::ScaleKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/scatter_op.cc b/paddle/operators/scatter_op.cc
index 35c185ad80..f901edefa2 100644
--- a/paddle/operators/scatter_op.cc
+++ b/paddle/operators/scatter_op.cc
@@ -77,7 +77,8 @@ Out[Index] = Ref[Index] + Updates
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(scatter, ops::ScatterOp, ops::ScatterOpMaker, ops::ScatterGradOp);
+REGISTER_OP(scatter, ops::ScatterOp, ops::ScatterOpMaker, scatter_grad,
+            ops::ScatterGradOp);
 REGISTER_OP_CPU_KERNEL(scatter,
                        ops::ScatterOpKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/sigmoid_op.cc b/paddle/operators/sigmoid_op.cc
index f35b702384..761c6de8d4 100644
--- a/paddle/operators/sigmoid_op.cc
+++ b/paddle/operators/sigmoid_op.cc
@@ -53,7 +53,8 @@ class SigmoidOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(sigmoid, ops::SigmoidOp, ops::SigmoidOpMaker, ops::SigmoidOpGrad);
+REGISTER_OP(sigmoid, ops::SigmoidOp, ops::SigmoidOpMaker, sigmoid_grad,
+            ops::SigmoidOpGrad);
 REGISTER_OP_CPU_KERNEL(sigmoid,
                        ops::SigmoidKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(
diff --git a/paddle/operators/softmax_op.cc b/paddle/operators/softmax_op.cc
index 471bb288fb..40c51a64c4 100644
--- a/paddle/operators/softmax_op.cc
+++ b/paddle/operators/softmax_op.cc
@@ -62,7 +62,8 @@ class SoftmaxOpGrad : public framework::OperatorWithKernel {
 
 namespace ops = paddle::operators;
 
-REGISTER_OP(softmax, ops::SoftmaxOp, ops::SoftmaxOpMaker, ops::SoftmaxOpGrad);
+REGISTER_OP(softmax, ops::SoftmaxOp, ops::SoftmaxOpMaker, softmax_grad,
+            ops::SoftmaxOpGrad);
 REGISTER_OP_CPU_KERNEL(softmax,
                        ops::SoftmaxKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(

From bb0a11cd14902971902987e2ed6f7107ae758bef Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Mon, 4 Sep 2017 13:01:18 -0700
Subject: [PATCH 50/72] Add a graph building example

---
 doc/design/graph.md                           |  51 ++++++++++++++
 .../images/graph_construction_example.bash    |  11 +++
 .../images/graph_construction_example.dot     |  63 ++++++++++++++++++
 .../images/graph_construction_example_all.png | Bin 0 -> 60087 bytes
 ..._construction_example_forward_backward.png | Bin 0 -> 55715 bytes
 ...raph_construction_example_forward_only.png | Bin 0 -> 32082 bytes
 6 files changed, 125 insertions(+)
 create mode 100644 doc/design/graph.md
 create mode 100755 doc/design/images/graph_construction_example.bash
 create mode 100644 doc/design/images/graph_construction_example.dot
 create mode 100644 doc/design/images/graph_construction_example_all.png
 create mode 100644 doc/design/images/graph_construction_example_forward_backward.png
 create mode 100644 doc/design/images/graph_construction_example_forward_only.png

diff --git a/doc/design/graph.md b/doc/design/graph.md
new file mode 100644
index 0000000000..87f696f90f
--- /dev/null
+++ b/doc/design/graph.md
@@ -0,0 +1,51 @@
+# Design Doc: Computations as Graphs
+
+A primary goal of the refactorization of PaddlePaddle is a more flexible representation of deep learning computation, in particular, a graph of operators and variables, instead of sequences of layers as before.
+
+This document explains that the construction of a graph as three steps:
+
+- construct the forward part
+- construct the backward part
+- construct the optimization part
+
+Let us take the problem of image classification as a simple example.  The application program that trains the model looks like:
+
+```python
+x = layer.data("images")
+l = layer.data("label")
+y = layer.fc(x)
+cost = layer.mse(y, l)
+optimize(cost)
+train(cost, reader=mnist.train())
+```
+
+### Forward Part
+
+The first four lines of above program build the forward part of the graph.
+
+![](images/graph_construction_example_forward_only.png)
+
+In particular, the first line `x = layer.data("images")` creates variable x and a Feed operator that copies a column from the minibatch to x.  `y = layer.fc(x)` creates not only the FC operator and output variable y, but also two parameters, W and b.
+
+In this example, all operators are created as `OpDesc` protobuf messages, and all variables are `VarDesc`.  These protobuf messages are saved in a `BlockDesc` protobuf message.
+
+### Backward Part
+
+The fifth line `optimize(cost)` calls two functions, `ConstructBackwardGraph` and `ConstructOptimizationGraph`.
+
+`ConstructBackwardGraph` traverses the forward graph in the `BlockDesc` protobuf message and builds the backward part.
+
+![](images/graph_construction_example_forward_backward.png)
+
+According to the chain rule of gradient computation, `ConstructBackwardGraph` would
+
+1. create a gradient operator G for each operator F,
+1. make all inputs, outputs, and outputs' gradient of F as inputs of G,
+1. create gradients for all inputs of F, except for those who don't have gradients, like x and l, and
+1. make all these gradients as outputs of G.
+
+### Optimization Part
+
+For each parameter, like W and b created by `layer.fc`, marked as double circles in above graphs, `ConstructOptimizationGraph` creates an optimization operator to apply its gradient.  Here results in the complete graph:
+
+![](images/graph_construction_example_all.png)
diff --git a/doc/design/images/graph_construction_example.bash b/doc/design/images/graph_construction_example.bash
new file mode 100755
index 0000000000..35e6997abd
--- /dev/null
+++ b/doc/design/images/graph_construction_example.bash
@@ -0,0 +1,11 @@
+cat ./graph_construction_example.dot | \
+    sed 's/color=red/color=red, style=invis/g' | \
+    sed 's/color=green/color=green, style=invis/g' | \
+    dot -Tpng > graph_construction_example_forward_only.png
+
+cat ./graph_construction_example.dot | \
+    sed 's/color=green/color=green, style=invis/g' | \
+    dot -Tpng > graph_construction_example_forward_backward.png
+
+cat ./graph_construction_example.dot | \
+    dot -Tpng > graph_construction_example_all.png
diff --git a/doc/design/images/graph_construction_example.dot b/doc/design/images/graph_construction_example.dot
new file mode 100644
index 0000000000..b77ddd448e
--- /dev/null
+++ b/doc/design/images/graph_construction_example.dot
@@ -0,0 +1,63 @@
+digraph ImageClassificationGraph {
+        ///////// The forward part /////////
+        FeedX [label="Feed", color=blue, shape=box];
+        FeedY [label="Feed", color=blue, shape=box];
+        FC [label="FC", color=blue, shape=box];
+        MSE [label="MSE", color=blue, shape=box];
+
+        x [label="x", color=blue, shape=oval];
+        l [label="l", color=blue, shape=oval];
+        y [label="y", color=blue, shape=oval];
+        W [label="W", color=blue, shape=doublecircle];
+        b [label="b", color=blue, shape=doublecircle];
+        cost [label="cost", color=blue, shape=oval];
+
+        FeedX -> x -> FC -> y -> MSE -> cost [color=blue];
+        FeedY -> l -> FC [color=blue];
+        W -> FC [color=blue];
+        b -> FC [color=blue];
+        l -> MSE [color=blue];
+
+        ////////// The backward part /////////
+        MSE_Grad [label="MSE_grad", color=red, shape=box];
+        FC_Grad [label="FC_grad", color=red, shape=box];
+
+        d_cost [label="d cost", color=red, shape=oval];
+        d_y [label="d y", color=red, shape=oval];
+        d_b [label="d b", color=red, shape=oval];
+        d_W [label="d W", color=red, shape=oval];
+
+        cost -> MSE_Grad [color=red];
+        d_cost -> MSE_Grad [color=red];
+        x -> MSE_Grad [color=red];
+        l -> MSE_Grad [color=red];
+        y -> MSE_Grad -> d_y [color=red];
+
+        x -> FC_Grad [color=red];
+        y -> FC_Grad [color=red];
+        d_y -> FC_Grad [color=red];
+        W -> FC_Grad -> d_W [color=red];
+        b -> FC_Grad -> d_b [color=red];
+
+        ////////// The optimizaiton part //////////
+
+        OPT_W [label="SGD", color=green, shape=box];
+        OPT_b [label="SGD", color=green, shape=box];
+
+        d_W -> OPT_W -> W [color=green];
+        d_b -> OPT_b -> b [color=green];
+
+        ////////// Groupings //////////
+
+        subgraph clusterMSE {
+                style=invis;
+                MSE;
+                MSE_Grad;
+        }
+
+        subgraph clusterFC {
+                style=invis;
+                FC;
+                FC_Grad;
+        }
+}
diff --git a/doc/design/images/graph_construction_example_all.png b/doc/design/images/graph_construction_example_all.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ee61f9ef4544da786480f188403742d48a1d9e3
GIT binary patch
literal 60087
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
O_@{x<Q7clh4*oBfq<aSd

literal 0
HcmV?d00001

diff --git a/doc/design/images/graph_construction_example_forward_backward.png b/doc/design/images/graph_construction_example_forward_backward.png
new file mode 100644
index 0000000000000000000000000000000000000000..f01af6d0cb542194d515129488b1159bd180f1b9
GIT binary patch
literal 55715
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

literal 0
HcmV?d00001

diff --git a/doc/design/images/graph_construction_example_forward_only.png b/doc/design/images/graph_construction_example_forward_only.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a90f9cfb10ece1e8f6b231c63ee8ee8bc37263d
GIT binary patch
literal 32082
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

literal 0
HcmV?d00001


From 9f3bcd0e4608119cbafce9db7191a74bc8a8bfeb Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Mon, 4 Sep 2017 13:10:05 -0700
Subject: [PATCH 51/72] Update image

---
 .../images/graph_construction_example.dot     |   2 +-
 .../images/graph_construction_example_all.png | Bin 60087 -> 58932 bytes
 ..._construction_example_forward_backward.png | Bin 55715 -> 54429 bytes
 ...raph_construction_example_forward_only.png | Bin 32082 -> 29878 bytes
 4 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/design/images/graph_construction_example.dot b/doc/design/images/graph_construction_example.dot
index b77ddd448e..86f82fe05a 100644
--- a/doc/design/images/graph_construction_example.dot
+++ b/doc/design/images/graph_construction_example.dot
@@ -13,7 +13,7 @@ digraph ImageClassificationGraph {
         cost [label="cost", color=blue, shape=oval];
 
         FeedX -> x -> FC -> y -> MSE -> cost [color=blue];
-        FeedY -> l -> FC [color=blue];
+        FeedY -> l [color=blue];
         W -> FC [color=blue];
         b -> FC [color=blue];
         l -> MSE [color=blue];
diff --git a/doc/design/images/graph_construction_example_all.png b/doc/design/images/graph_construction_example_all.png
index 3ee61f9ef4544da786480f188403742d48a1d9e3..d769d70af759873802144f0dd0ddad21976a22eb 100644
GIT binary patch
literal 58932
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
F{{SKxufPBR

literal 60087
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
O_@{x<Q7clh4*oBfq<aSd

diff --git a/doc/design/images/graph_construction_example_forward_backward.png b/doc/design/images/graph_construction_example_forward_backward.png
index f01af6d0cb542194d515129488b1159bd180f1b9..266f49d747f1278a606403f95fe8f9c815f3159e 100644
GIT binary patch
literal 54429
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
a`Y)g9=2N@ALobK{2s~Z=T-G@yGywpYgtEf`

literal 55715
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

diff --git a/doc/design/images/graph_construction_example_forward_only.png b/doc/design/images/graph_construction_example_forward_only.png
index 2a90f9cfb10ece1e8f6b231c63ee8ee8bc37263d..eb1a22da72e1d9aa7abddad1b70e1da995ebda67 100644
GIT binary patch
literal 29878
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%0D2#P02r<A&Ql
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

literal 32082
zcmeFZg;$ho7dEbxARrCWNJ}?JgM^f%bV&@|DK!GpDcv9;NO!j&-7qlJ5CYQOG2g>^
z*ZY0voV9*`!S7w`S;!h^=H7eXJFa{0>n2R)y)5Q)lIKsJJi(NEC#Ck}2_oy0Cr|rO
zQGi#fRT_qXf1bLi$x1#cA0^v<@<jZJoRoxy=hMAR<P@@ANU$>1JA^MQgj9{s(EZqv
z8t0_JiwH;_3XbSR4C0lY((Kp)EjFn3U4eR)D-wZk@9*DFv~btdwA9qtao=ZdK{Hdc
z4t9zgyo-0IzwWGMkecA)U_brG)6eM7=0CZ{rOW?80ZB^yACE0H=fB>K?azW2I~li8
zlGhye88!58Pyb}D_dh=^MYVurW;JkeuDbt^@1?p#%CG(XK#2Y1pMvl`ea#AO7cI{G
z$M^ou`kauo2tz=iLZJTJ1Er@bpj()gt;74fI{u4~(%tHbKl$g13&4tIw>L%ZfBy>V
zSZ@S1U1u;l>fh7=R5D8kR<t#uoO%BbV>l~|%PSl>Jbn5Plla>{uDHLOH~$ZNh##Q6
zvl_T(rF!zu743i(t9^Yng#M|z2%vgX2Qtz>4Op!NtXN+WW6kgn)teXq)h`=9Kl!`)
zL&fVKSNxx`|DU~M|7Yy~dG>!p`+sTVe`(~uIro1#`~Rl}(sjiB{6wpz<$!C!W$do5
zC6ARts6J2D5{!fG&xp2HmkiDHkkK(&Ppms=2K@}?HEfxtesr35fdC@lDQa*UMZ+5w
zz3Q~>kL7b8Jl0}wGjrcae1nqnJwjXt)#thZI<205ewh9Bxp^tc&ye)4chrAXZfs1T
zzE3ztwkAjfQnOdTdfxir^_msa>D5eVFjZwI0%)g%$!O3b>qo1Bp7dWBz?vo}C278K
zoAJLs`yZ6!{{{7(l^kmAdzybB0%{dfV1YWPDb@d1{r<vAXgB~k!M4nl`3I7b%HacG
zi1qsSynmo1aU@)709m{m7mWG`0t*$l1K`v2FD2Q3K%CF0v{C>*k<4);`InIMfRI0;
z(xY+z4$S~7h5}anBEHM>FCpsyA=OCv$?5*7Q!F;16PiE7>R&=y(@+%@@YxH>|5GQb
zSAb5q2xU|MKt-QXr)2;k?G{}V{-u*7QZv0PMJ7Em!sU`jw(tG<?0(j#CAZl+3K6f`
z79&}YtK&Y({cj-@)qND+!|&g0Bt%n`-vhhjEWR?OELNwQCsVgD`DQcar>3q|f%|2N
zdC060c<G?^^u3<Xaj#tzFQljdmHa;&h0Xm`N7n=;19Ysw)|4-DKCNDV4$)i4kqF!a
zK2#?LzpFXA{D~zt_h%x{uJiNLi`5XyUuq-X2Tgq!OCClon`t&CuZ@Dj0d>UuQ$cA1
zzzb{(7TLbfeP?K5geRw!?=Kb{g4J9$Q!VDlzr8iJ+G{y%w;|GZ^e1;6m$(2_>2rQT
z!1R}e$3G!d*ScnX1SzC^3?{a1*{`pu853RD%=9o^_!vU2JMFd>#=wVy;?(~=-QF6I
z&sXA2c%Dz<YXoW)I1+uDCAFU4^@d##fo7%9LE}$8n2(E|+sp?AlKS;%q4`mvL;Y&j
zVyx3)?wI}h1$%dhj)l%_xfiWW?}v@Yy%C>Antm&*#ACXl#5<#52ML9aye`bB9`O}C
zr9;Ghpndd?aYFz4o8l}H?|D^O@)^i#<_+6kUia*Kg71O<i4T)kfTt3co~!-|#i6lH
zx2u2sV-FEa*jQQYzE+8Qgr~ljP;bt4N@@1nVP6cT1OK99U=+C!<mO`EX7tVOWPySl
z@y%ZmGJ~6={0Xp{?S9>?y`b4*qf_wh>jV9srqcGC9VJ+h!~E`$<6D{}Q1t+PO+k`w
zv17_jacq|1qZm})NIb|{Z8mZ5qUaS<jQc3TK2uGOI1A><274tH?bW~*S73{GtOTIX
z+f=k^&K0&DLbpfwVJsLdgnG7|w`1T3b;jK!J^QbdlTtbkfS(J>uT&4QaU*QJebv;r
z(iIq$(iTLh+s`*|NwWZaMRx`ILAl+z`JQJFj_lmg>QB3sPXGFiBt60#=6VGy{{X4S
zn5dQ$PfD^iOzyWiKN(`@ACbxZeAJ{p`eus^uoLt-mSa8Mnc(eS&4T|k3hk5$+e7bY
zsNd~=nNf!yGR#$!+ffC=@$Mb)Ma6WVsr?IxUZGM3ZA5a9GWyWdysBb7Gg4RNl$LO6
zx?J|&Z#^BYdAPqNGBKUsEjehvJ&^49f*itil~+MM^zAQcq^MdR4_}w_Qo1#wzBhA$
zSfX<p^jLd<)aBdUfe4FD;T9}J+Qv^!#q!$@WuwV-9GQhSQ%uta%^=RH=1EmVMm|+m
z>C1n)jvmr`vHP<)@jH`<qZutDyT`yG_c`iPlJ>cPTF7wR3mvwqtLOr<ycgW2)$`ge
zP?&6GZ`rF3Ix(}d>MrJgbgtMpK&IgGkc;~<UOV;PCWPEwd({l)cU!hfGm5c!vs(en
zMcDTpd&=H+rncHBO=M8}+Y=K(-tkW$;JnY!VxbWNLcf94>vTY=y}_8InpFwbw@h55
zgb_DCOh~-gAA<}^3*>KL52UQ6NmOZvQ%(n&D>Q^1ykRcmmoTuA03Vq?K2iQt2~Ny5
zqNg~2P@k$b;8}#k=4Q?{!NBk~6P*3?58%7wko&VKWhHr)Pp@`L2E+c;JmxU75Fm~2
z=|@akPv*(Sbg$WOWrO{?&T|{7wG2NMaC#4{Ih6U1ttBAAXd1)h9+M~43xrZ_W!$gu
zhszGS-YHp}*-1mAVCmEqUlzV>@WZG7#sc+!PfUUaLKK^*uR|B&9C`oDXzG>4qMQX0
z8FH+t13N5~ZW{e2O*6uN{}z*PuCt#{MutKyj2Z)*!tZKTQdbSZB6TC-uic_Um^u59
z|B*qWA4qgS&3qL^b-!EQGU^VbSxG9<jr!SSa_9b6K~ps{GZh^V*5Lc|WCQR0x*$8G
zb>R2epv#;8oP1+hACJv$BGhFgO8iUH_?6+jNU$SL(_b3GeFrUvhM`WxB3`bqP?I_}
zsw4NS`Y3|#7jCl>^9KfhvTQPyl&YadnjeWf!f_Q?J}L_ze@RFR|6QkwbfWZm0F(Zm
zHaD^a@kh5C`R+6(GxXi17LRWZdY-F6`;F_-%x4CxYYD(+lq&VUdCcvm6Y{umu@aHI
zKeV;N+tvP4-(y7(3<BQIn^)*wmrb0{rrWhQA!CiXzKl)XYP(!!ZVYrgTyB%5o4?IM
zY`;5ESl32D$Y;!S9(=8rpuQVidp)h|K+b>=CG*+uIT{A}kN#(rJ}TN;$O?{hRuvW9
zCkmTYhHYL1CT5=afLrG$h8J7u&HGpv*S>hHu>Kf$Di@U)Mj1TCkTN}fJ+rUUx*~3X
zr&0OWe3SZ7`Ne$a!(&?5%y1dydsRED^^siWqXd1bSsdTcWb%J%@itzpxAx7fIPX7t
z8&7d8AAt|w${*%`RroWY*B}QcDMI<r$N%q7JM7rWNfa{Qf0uGmpp<VLA<q1>zaf=_
z3GD0q=e&wXFa6sy`PkvOx5*)SbfdpLwGu!rCv`ka{Ku=I;x|Bs$p>R<ApT2CJ^+YV
zAx5|V8;E2BTAfw+TmMx7{;%-V<0ycbcAXPi|L>*0-T_!=GVXy_1@rGR0>95w0Z0T>
z;O5^*#23(NvIC{q|6gK~A~n|^XSU0K6+c{loz?nhdNlQzUsYy$A={6sIAa;8?)ma7
zqe3Iq(^^mS6p}T*@?_o(v5!Cu8n*NP%733xUE=`J-y=lc9Eti42V;aaPtOl|Z`0K<
zR}5=rT02BV<3Gg-4ezX9NMmiW)hKXl&shEGOMHLp(Oz04uWjsKB(L`7KiV1SQ*~1z
zl;Jc!c-4&XUqX@~7ZdJ}_IsE9<R0I7$?f3-{6Dpp1OT@gekAC{y8l9**yMn{CaN^#
z{$(#tzzc8@H3$H}@OKOU@9hZxv&{dT;Q!kR{Mp!I|Aec{ohuqI3e@Dqu-SDb8>O|~
z6zg>O6)ae!kL=BvDl}}zKc*F0iIw_=;VWjso7X_Xzq7dl|HK@D7>V8GYyFi3{k`ab
z<YZW(k8v*JyFW9uH>Es6Z~YVHaw{8z_$)2cT^A!!<?Ca7j=%6P%;wYc`vg;V+gAHz
zaZ}Urz~#O3x@IG(q&21<$V$L+(^&p|!QaoPP-l2Z5QOh;FZp-pXE1v6>%>OuXEY}=
z)C(T-w74u<&KHiZ0JTY7v0jfonxKL_*Se0!&zr>qc?-Zp)7Ew85Ksqv`C{Aqk`DlA
z^_LS3k5XVW`0qFHr<=t=#yWvd;{0`Vw8Q{1DapE^3?v*#cbl0F=W8!f_bT7+!gfjj
zN>u^k-gqpE?UgbAftop-j|o3=_oWrHio7FE2`vWFZxYS0$a>)5N-Jl)8Z<(vUwO`b
zLVo)QZ-Iy8vA+FkjQ(1WQ1ClOjESge&IEKiW^^rNNAOr$Y0+x=y1MftSi0p5(K7#<
zkE}h`Ccj^99>Gmpe0tWeYfegqfn{h6J(AT42>pZUDmRi68MISeSB1hJH4hbE$F}T6
zD{>+!N}852ZrL9;^ct|(L{k_Sr=tA^Y?eO@c8bgU8uMgc?+cw8$6ii)y(FDqk%zRI
z4B{Q|0R|8Z>~QfD3j_cpzFvHgx{^8Hel3W5Wcu2L#~H2C`&hb$A9e=L1|PiX#`UKG
zJL(%hg*Wuzf=Ywv0W&f_`awd7=)ID01nck%fgIvzyY-c90fLhtdM^N8#fm;H?HCi8
z74DKWqKj~}n+@WbU~e_%bIymZ$E3F%2SZy9HS0k^7RH?;#@-Xs_tZTlWgx!Wz14<m
zZ#v{l-^=S><<%>QURD=NjpzHCQER@_VMEnb(gdQ1xx<TvdqFGPK1|XiQd{Ht%`_06
z@~~zY>hJW=gvrB~=MFXJCFRx^{WN~8NGJ$f*$(x)<#rUg?0=oER1u8)wx9W9G~(P8
zkBM@pe?)=nz!w;fe#e7=-im>D8T9HH#64<Re=-P)U|D-Me>!Z+cRuZxBLX!8i9P&*
zx8Dq6)vMa8xHE1g8{IjTUe}HA`ITi{*r>q0TQ9SqO<QROZi&PY{8C@|O)~MAD&+aj
zL|!wW$%M)AbO;5P_sUZT>7M6r>08?_`F{H9Q6qc;j7e9a)gJC{<n;r}*5X+Zq?5(o
zesu8U16i@bqfb$BBG{C!mLX=uLbq=ZmG`FIys23bX7x?oC*?pD?enFUr7h(RY15M&
z_(=>|94)IT6;FI`%b+r(spL*yV&Y2+hD#|=Z+1ZpS(fhSGa#4YRXlOq7CYBL<iYVo
ztuzDoRA>n0&0b~*rG5Rlqz*&gO_=x@Qox(nVW=APmB+vQAaM?y%Ih60k0In=ies!P
zmaulY%GZ{J+juPFAkh_NKS0;!y_CWU3L#T#>Fy?`&t7DX+REHo%1{Xhnp^BLt;=2`
z<!S|WKgN_BUCBLjh;7nE;H}V&<n*@tdgz3#Y+<E1%FuIjHNLGC{fu~*5GT%aIh8s>
z|7g6}f`av7XE&sW+AFBZ3FL;Qsrk&h6m=T&DT>3C@?lBD5UvwpToO{KGSr5h(#7A|
zW0-T|MWtTWghSI7Ma^3*-k(fP;}RfQifw`n$i>*rMav=I!Y7ODgq7d%BkuD*%<D%^
z_<T;IuzI#gd@c=Yy1UxKcgfj2dr*|Pm9D=QWXlOS9ruDl$U(s+6o<1qg|3voxc)M9
zvBi^;gt&s7AWsheXwt2kgq4`cvAr=dZ@4xg&+k5HSvq_dIu&Wm_kfCFfx{W_#QV~|
zW8HEZT}Pp%cs1rz_6x#nU9Mk_m^~eY^Mc>A(0uOe4hs#vM_Me$wT?rEXzw-Vv?gRg
z=|9`U=RQ|fbh~}&eX(8gJ-s~3iq`1T`pShBJ0+sSLiG;ZgIcrX!Jlr!#?A5yekFU{
zP;lr(PAW3LSJijNoi?o1^Wqy>F!X2W1l3BGKOZ;z{^q(`LBaY#Dz(SQn0H0T7r<t7
zn<CZlXhmyA{lcsrQ^iril5^OJve>n;k3IofKcx_)!C_J^eLZjvK|QOg<9@Rv1d}bg
zQJBkWuB`=T_>c|j@w>f7>kY)>6MDFU5CyS`X=Y337^2Y@*ZSO5L4RW1iV420HXr|b
zO!EtgM09bWx(n#9P@p`CS6oXZx-%yx!)AQ>f`sujFGko8WhSK=jY{8~poTz;C*66_
ztBq%3wuSHksczY)2Kqhy#)j%)!iXp_g%ttGHU2<ouLL#x{!HCS7T+Dk_e}Lni}4hL
zNm4qfO%gd+0{v;z*#|QC!!1Y=fr?Dok?kHI9KpW47ruSje+bvT=B|`^DRo+k4IT@W
z6DwsVGBB%$KlpWyaM$U365?I?_7Z?R7FX5DT)=r|KY4uELj13gB4fyR%br!Vt{r-3
zt(#@hnv2GVC4MoT3qkv=z{a`Yb1Ls`?m)UvCmQnbWW%QO^PpS)p}?sk<!oSpEJP_G
zmO%4}EVXr|Ntb2uw5P-oD}MM1-PVu7J2TcX!*WtzDY|PI+~>3C{Qzr&2IY~_4;DK-
z|5ChA1FLV`E!*_mK9-+i0wgst@zL=y1bePGcNa09auXoop7dd5MrtuiWkigc#48Q+
zEplW-&2m?iEtWJl@s7uC#`Mo^VxH7wVBr5Lv~QakV=~43$d@JtiW|tEh9<yDq2gjd
zhsTdFeSj3CIN&NxDQzU3Ee%U#2n!HHl=>p!W)sK%fJcAj9e&n}<l+*Oh`#vp%0xuG
z3RI1yWz1z%_uVrgx$Ar#>OE`Vx0xL##e%F&=Ltzh51;Pz_d61EEoyj~a2Q`OrYKt4
zR^L#%Mj``NVe^b!sSfJyyKIc<;&jzxfpxTvHNL@JjJYMcN9L5ERWcsdVDpKIc&RC)
zf2_hsM?D^kq>pj3<S~j#y18f)vFf|MXj}89Vb*YT3Ebf#c8~uPjT!%XyKvONDaeJ?
z?zet}{iu>~6&O4wGJ1cm6@*A)8Gpq;-m9T*LU#nw8wC=Q%hdbb+hX%1r-S_X4DXFZ
zvm3M<>e1deZ}{)&+`he^E}M|PTW{$WewL&++C&U;v_JbZxYcy7xwV-w)iglwVt=`m
z>3zFDc<W}in++E1b8%1naChH2DmdD9`hEj97{jStfy2$~Y$CB^tQ*4K?r8sTeGj`m
zY$%<G5fkKh%yBVj5u9zPaA|-oJ7<sDe^VUXB+H0!NkVr+-<8V*bPh!dkTrAVvd?h2
zJ=k5uR~MLVYjHtD5xDHZ8xX!*u<reWHfrGZ!G%Haa&gqa(ch)x9s*H4zs$Uvh4HFK
zO}#prGaW5!`cBEgX({yJxg~nXk=cx&ohYb6w9{i8EvPmtgLfQr8UAn*;c|cThJT19
zF%fpWo_X5=Kb7z0TM)P$U^t%M`WBL*=c>8|WcViT(ITH{1-9c$FB_PaC{t>g*xgDZ
z@-Ga<FG)i~>_QDI0e-puoYEP1xr~7sfpVCm15HCgf@)g$WIJp){xUS!VUs5t$)o!X
z*@r2W#TlQzyTJU?l{6|k4i@cO-tced`x!e<NRLhsPuGNkMT|sdMC1^Z#r79F9yXrY
z!0!rOJeE^OU}C<wZh6t#Mn&9i6&^V7s|qT_EhT=pa*MG+#0872<FR(bwhZs1uB+YC
z+e1T~KKaTnl*B%i!pu#A<dTZ$4$+ycr_sCRyNin4AL{W9z-^anEBrUdeKSe(*Y^TM
zTRnllgGqIhLOw(Ys$U8u7A09g2ysHQ#S0S%{jiA)|L}rAuA?HeZ$O?q5-AglrZJ%S
zgPJkO+cJe+#)ksoGdUz(nxpgC(f#HU%9qETly9o*L~0r`o7F5>*lYdkr_)2h&RQ7B
z%=lk``ul0L<>15++oo)TEZ#tFFfT@sf46j$wcXRar1#<Wwz=)bI<C(8UY{X*Z;>`$
z;PQ7o>*X7`&lY`Je^c9~`$3GDt{>$kAz<krh;FZmb`+Pa0;P~h!o)}9hvuqA%WC5e
z$&Nc79&T@XxImE}r0ab#6_#y{kzrupWrt$76Qm=cbKrHz#BCyVvK6xvIh{H1YF;vZ
zN4iI>iMiL9AZTM+T`%i&GyUG9(a!Y#-CIw4*2>Q=r^D-H2gALRnVQ;NP11x;FOm;<
z=ze?NY_r+`rE~cvjMQRYlDx7<t<bs4tG7)>Zkq|F^;jKHr}JwUJ@fcQ)=P8;Dyj`h
zjP#Z7tiyU=y#$675gh}|-p6ChysA;vvMaMjzLDfuZYb90f>mmYNqpmk^HO(IcEiP?
z;A$<DWh4{4E5ifAFEc@nxUJ}ugaJKa1AnFp3rgmmQC?N`N<1sjQb=I<#n%&`i2n4L
z_IyBX?a7X0CKKJ09L!oeR=T>3Y|#jD3p7`4t2Y<g@J`yPcWSAff(!lDG2m0Btt9=)
zmKJl~s}FZ2ZE5rDV@U1SzgjfT|E$J4@{pk8MvU_<{<5@zNZrMEP!Bi9KMC;%R~@CU
z*sbYT<95hphJx=eJM@^e0Ze3&eiZQTZKX=iN}`3Z_o2wv_pJFQau3BkO}p%PK~?@8
zZ5F^S#_7XQc@X@I6A1-{5auTSFkh?iAz;jZrmkNN7VY0p(yN|gIvyLXQ&Fl`TFHxP
zjX?ANm5*ny@y)Il$Ae@(g8&Eqy8@{TiUf)mY|*a%?fgNXeK~|pd!yV|c(>oL?q+90
zwg;YCYOSucvB=q%kcA%Y`4Kzj^mMEMX1<E&mTNy<wOA~vXNhMQA1dC4SEOqt@lnFG
zW53?Z!TI)_p+D*Zx8MD8Y5y?0hhi-o$viV}84X)MG6DnfnwI+}zc-3+Qgc4T)!40o
zF9J-*bnHMAN<Jjr)Uxur(9?XgZg#EWEvrS2pV^7edemedrB}bVtMG&8_C=!@CdJ+&
z&s41|9UVEh4K!hv`{2ek-)BdLd`Mk(T}?jSGF=L3CsX``JbIcSAtA!`3H23{Lqlea
zi=5C*(bd*Qxw??h+t0|eDOMRa<w+9lnXmbG`*6n<)2+M<q_^UVJFW_UX1~N)?AEr<
z(e96x%h+`4BXAgjc+;aMYv)#f2$B+OjG?0|wFw|KxL(PE5haDQ^j6jW`U0fL6WV9B
zVf9w~NsxXk?>1~pEvv3-$#I4sQK$4NI%w8rD9mL%d288h@Ybc%^Tp+ddtXqQv(cHC
zy?ULS1)WQEco!8b4&3!B+cVb%7$tH2axKjCNh&X8f7^*L9m#pnRCqQ@SDCTDxFCl*
z;904WAh!FKS(9+7d$37G_80SXlQys+c~Q7HMHUElOstl>!l(_f_N?@|rsh-AK8K8%
zz<9#rORU)1D+b>-xAu87?3B?bg=#37^9p4ZG(ROMSmJ>HzofV{p1dQ{1#-p(Q`?%h
zj-x|)vINuauUL&-?aJ=hHKEt&eM}_+4Ny=ouVXncv*xxT^o9p0-mQr(5tDrLj5z*Y
z^yA+ryOrLHp0}ps%SN4`w^Sk6$5B6Ix$EA=w?YK9_K{FIdM(m>At!7cpQYm@8rEPw
zvvecb(qB~*1`SfMM5dMNXNH<h^Uc1K1Bb=oIFCS-PqTfKWfNe@0n=m1Ns0mC&K{Ke
z-py2S(gf1@ZFIU#+mh5SzYNe`3jt4u`DB<IG;8GGK5qq5e-9me{|4GR$OO`}Gk2f+
z2s8w;6!UsJQe8;y(#Og@bQm0g(-NMtt^3`vPKDLodEiqP<G6%SF!y%;HSAL%l*}as
z=x@4^KimxM4Kk0^FO1s8$)z<|TrUkWr;qSwLkYAJAkI@tBg<ge-ubLTgY5lw`|WVE
z8@HZK*<{?0vCZ^!w?o5bk)iA&W;ZqqxdlrayF?&#a4kPry}7Zh0Y6OH=0)w)SxrE0
zd+<g?Z;H%ivG;Y-6!736!d8Ve@HX`PbqP}YRrg+o%kWj3qKKQOO{#vIvE#IA)<Ck+
zFR<Y;yLko=95_bm+0{)73SXo^`zQf&fKju^Zg$aO-K>d&Rk;<c9VFtF5=91WWsUYo
z=$MoT#lN4|ze#sUYdZ;t)-Uimlq7phr#4Ros{q!FOgHxwZ3`DCLt<iLrSw^;J4SpF
zx}I>Z1N8RO>{_d!y+nOR@X{mr(NC=XyVJ3TOpoO^4>Aod!L-*6>IA--uMmbAPdS#Y
z3Nbz~Z4@851PvUm9&1V6>2bXehqHI2h+LZ~6m0lE8{W)Xu<b(DgOnw)R<z#~V-j=q
zPyq8N-4_)%DPZ`*Ud`C>uShFVq>@)j7pi$_4ZX+FCqs!H&nS7)t(j^FG>i5l`IlVd
z4SdgMl)#T87hhn?u9W@r@Nq`?9na@vfPoIyaeL6B1ate1>Gu7g_M5h*0k2<D@79zz
zPH39AbOCbBS|oQ`S%cwpVaegi%a<bO2~bjpo`q<ZBRDY6M#uWGjtC9`M&u03C|WvR
zYIh~2(e6V}{NeXwE%uQ3Tbac<V}GGt^W<J%dhTO~0fE;K4sGVZm>i_QZlD_?4@sUB
zDTbeEI>yB#z&n7kq`(o+RnZNi&78{s-N^UU?;AO37j1XWn8=!+`Ws+rQKT02J-7wW
za{5>5A$2y}7uI4U!l%Q0o=3(DUb|(8$)&fY4#s?Gf*if9HN#x)z=)Q|&WJ#1%^}qd
zqEluumKAjP3pp_j5!ONS1wbdx=2*XK6ZsURawyO=G;|L-V9YG%Ygl?O9>Se1Mo-AC
z?-XIUXACIW0(9tig%}8__0MHQhgci*GnDpKpmN8DDh0JJ)=1qtQ21@fba5;c?<dk_
z?3h?gMfe&_aDnz}{U(skWcicAZr2mBmqfDEr(<Fr`!!>tUlV2wU*RF=eJx1h^4>0(
z6d}^?+yj7A1Oui)k$`fQ@$om&y1{Vfa?8RjFYDDKG(37F$e0}Z;T9&_%W$d_y&Sjq
zqSwEJF7JRrdIW3hQMW|oWHq1TN+%WlkBc1I9Yfo?+`G!CkLgf)AoWm>OIp1e_c^mX
zywz65MBBYl;TUnfS`7)Ir133K@7*KO{$v_odVENt2p#_ll89T$4stJkF@w{|OW(>+
zEJQ8lJ)zu1KiV#Tr`M4kw-QrO;Bh!95UDK2d;4&^*=4oMTl$b5HW7&+xAvwpr`boG
z{EyN_A0^1NkFXf$x}yQcmu}0&tsndL`c#=)xJGc-q~YOaSFggbZ4aO))Euw(h4e1K
zk#+Y0x_|{gKxQyLXXN!>1h!N{SPlN&*Txr7VP0HM@>|q@cdM4e$C(>`=b{krq7n6T
z{|_+1M-%+cZ&%ezh+geh`hg>rFc}Vn-$GuDs5LOJR_B<iN+@gEOrs;;B$7DW%9NPL
zH{43K$m$k#dG@}Qk%iR0@#9ArI$L8WN8O~A)a#VuKtFoEuyn93fpXDG<2A!HMkYN1
z5WDeCq2fzCzq>j=3cIGJvb;pIB|~aEzEO<50TPNKy1v2p*JrX;)0p&?{;K*(MYY!*
zxG8a2K#U+5qCkWhJl%aLQj$}?EepT<Hl3QfGpgS}d&P~C^)Yx-7Z)pRm^T?5bt8s&
zxEolT3wxF}0ZO+cWK?RS5kamJXn+~&(w6V^&l=r&&x6Ac#K;OWA<Wkwe`w=4we8xT
z(mw~iK*4xv+(+(_5%rQYcfdMm#=LxmI_d=|G|Uca8Y9xJP9&Q5+f}pinI)oKsvVyZ
z2_A9d3c<E=rbtvYk-rogQiJ1<aZW1kk>5sncW@bOjB0?zp`9)2yO&}b{hE=Tk^J!E
z?Y-U$;UjUOjRf`QgTDY?g~3sQ0c&XN?ag60C-d<kl}XGCm+>44nMzVDrY{l*=G>0j
zR4Jeo-wP<5jklRdaJ-^Dyu9@!Ztb^`U%A&E89&_1EN)itR0!i4j}?dZtCaU*to>+X
zIY|8SH{?jOFK#LU1_oo4HE$;O0Ze}WF7?dhg7TpUV;En!_9d+$A=2s5-aCblXzb#P
zci^k8XL=!9>xp*n$WqTz81;elhprh2=w8pEa|I;L8$6jaN^>j))hcY2=r4As*}1pM
zO&ddkU$(+cB+YL38`w22;uP4dig`@G8G-NXdfn-TzGLzf5f9c)e5WY^<3U7h6+CH$
zhZ=%l+aHjs-{%BP;##i^3roEQqwvX_(DFTZX3W!GasM)T{Pt*fH6$E6q8sbB8=W1a
zI(yho0Y%kxcqfvCcklvW8FY(kp=?`+Hmt-z>+s$SywVohxa{^&K>F%>H+PJ)KU-mh
zt=%B?(K`XYg3A?Ny;xaVxmR=@vN3yWvv{|gshqU~AK~{4<|*Uzz@jdH3p@KN{Ygp;
z)5n$2z*Uuof=X$%0U@uE*6yJ;;^}I=gx@US=C2$-eOee5xm={OJE%jRO>dkxuxoNU
z#mXSm#i)k{Ct!8oLq_jqU-_&C5j{72p-p_8Hs^iVCZuHvotPG~eS7s`F6m@{^)l19
zVDX6Tqt0s6U_%JZ<9A{hG%-N`Cp&VN;3^Vx`1w~^3ag$rV^$yH8gr^h|9U7WJsKaj
z)BbVkXZ;tU>NX#}t4u>_s$C>qMphQlFGyKBUk435mdx4PuX4*;4w{uV)^36(tCwL`
zgQGx_?+kJ6!u8;!xJyx0)#Q*ny$85j`kpGj#4J*s9*ySs3K{JUjiW)4;bX)zw~tnm
z{m@Z61O)K>{?v5|L#IQ~?JK2khuyi(zlbf6b`=^WKa@A`6dQl+*q<!bTwQd6YgTt=
z2WJ6=A}CTpyWM@!sV|_H&h1J9d2Lf!pZ`Ftx0~<xp_~u=RW7`DOot^x;aPigqog0f
zx80}v*9*o_jonJtj|*w-p?{S0$cC;VUW1iljc1bzfiL65&>_VDQ-kW=3`IUI=9hu_
zj(`smPMH=a{Lj&L4M(H)Hx_aQvIl`_2WqW~Zoph+z!!UY)eiwW!LPrk<OV^xhl{!p
z;pfIsJr>4|6J^aN45WCbauaRKmoGU2k2|QgK!1{OD2NItCE;XT&&P;1Y_#2{@A67b
z)69EE#76437s+Wl9q77`)%xB)TrQvSJ|lNk`F3bxg7S$<o6$7W4RY-rb7r{qP-f;Y
z=IT`VidTrOXZXQFdTrBaV1&W7Kpp{66XDBrt16nk!p7Ur<B6|r^)$Ag4_QT+dLB5!
zbdAC)OftF~gFFf5R&l!Be+l=rjDvG9OuC{ZyPK0;Ouet`8Al7bq^QskSQC;sSg(W*
zrM$gBIPY#{D}CrzSCti?i&hUy;Sc#pC7^U)rWEP?*;)2JeB}2OaMT3DJ*#?t)W$~9
zm}&To7A=RE%Z`W@-xL_UU%Z>L&mJ`rc`6A(4PiEvXt~MDTfp;(h6cQw1t@|`+My0#
zr3qg*cF1@HM<*lU&3(C->r=3Vhn5~~K_y#z0d|%H5c5XZo@7!Kg)DMM7AwT1AGE1~
zM!6Wh|7R(FVVh(3Q2BQg1{9+>zZ$=AlBi}fvpkDleba5X`uk(-E(7kzeS$ayU%V@g
zM_i=@?NZSWJ(XSs36)2y%4uH$F40uW%a*kI=8Or!3CHqV?f6F|lt|-`U6#sn<Fwt1
zZ>x?>>GmnRSr89Qu0{ya{c^ZbRHJ&DzJR8AA=-JBl>Yu(87}Xq4qS6L<dvtAaa#S+
zw^`QX8n603!19Np(!rDa6W7)Zorkfu-~6*;i;Y?7H>1&rOWBZu3t2h*l{lhfl&ZVI
zf5yKBvDgXgX<z0F;Hle2ITWtYUd6Xx++Qj%ch{r?gT%MddX7`{nx@65h5K?I`V`Lz
z>p9twGn}u>@R>hj?8wPzWcf95D~4@LHzWHcGS{4}!*H8JoetOJa1&KL=2c2_#%1P7
z-bUvZ6_+_n<tPC=O?dI*<`r`|vt7++>y939eCN#&dq*oro;VdH7O79{07`HMfJ2e-
zb^sz>dbl~^{(!N>lXjY;EaRbDxZx5GH`7D*RLGP<m#Vf=iWLnFw56+77?N3p#O%59
z4Fq)VHRv?i7+yRij!i#64g(Bd1b^%ByOr%}kX5@|xAB*cj_X{D@a7LGx-Hh-X<V>x
zAuu^UI_#T_tMB|$MH{&m$8to8SDM9dJzXRzF3SBNOYWxeitY2uejYlshti*2rJt%k
z1bJd(P;Nv#m+1<ykYMbI7X_%JK|Rk_>lqDIF9v62J|2zGWc8ppp^|-dMh@BsZ=s$D
zxt@rvli>@q)buV>^_Z+Gb<eY|rU_&Ue^_<gp{QqNVYfBCzBuv*&JmDD;90*o2}~Y_
zb6r)}`aHd3Ka-=QLAyMA8%_akpG~;jD<#f{6<e{D&xp?}hILP<o?EaVqnm5SvvB_A
zmkoPWPKU4dio28k9X6%vnq_XBIE?AH0DQJ1m#ND6jnh$u&v!_}1K{W~CP<K>u6z;C
zqm}Mvfig-QIKSL+Ob4CdTYRJx)nzk0bhSkpRo$&YV~%dcofkrT<4pn7f+T+dnK(W$
zi(cbmYzAG12HMo(AwZFIKL(CEGiUBYN&#SjMs`YV?rnmX64ZFDv?=<uBb;L!G|>XN
zmCLB{ArZ1g1nZ;tU+U^p@JsXir67$tIm>OnM`BxSge+k(!fLGrE{9<sB{+Z7I{t>}
zIT&dF`sQN6D3aC;CwHGdL$;HuDi{F{u?h$h7BI<&tDj9!kjp_%pso+WK(I0P9zsK<
z=Fsy}W;WDj4+)<Lbd)i=TjcF1^z1<79{oy?!hpx>v-)SLzq(_-wsxCkeaZl6yYIqn
zYGNC&8$O*x`lZssBdJyDn6N#6<K#Ze@ZL;)ZbaYuIwjQU%+3m(#TX&Ikxt=m-QK2d
zgJA$%-jpG9^Jg;6z^}<AUTJgj3tGWK-W5K}caj9sw_Oq&<?ZuL<pu^vdu(OflIU+d
zj=BmKav#oOzyb|Z?+Xf+y({44z9(|q7o$GUSu_Z+3Sn1)A^K91ncIk#Z>xY1Vge95
zoyx>yH-;|unB~vluf()o29Y^DT<x{=DetSA&-ND@2A<;`4BfDya<Zv6R0j|)<ek-Q
z_(*)0yghnb<9oTG-ipf)_q3r@-j+LwDMV)CeSttrhyiiN0D;#T+iti9qTdaZ`|8aj
zpr_nrx^hBx%!0tBQG3R#awkS^GfCx(wB<C(O0gpR&f7C3T4vC)L1vE;Uc%A}%{1uq
zS^iQ)oM5kn?E0hBlc6QWrUs`fjHD;wis1&(2=oG2=p=6>aJV`V{ml1kq`J`npku1y
z6&2Mw#`#_x`{j4t$Tks8%2N2&Ld#pyMuZ%=1bY77cG&qr*wd7{<m*w*YpyDQ>%USy
zNF5SF;bmD(P~^z>vJ-(`P7Y|9SR2WX#`A#n6SMuAUAs)<nsOSEcJU!mu@q^Ms~bb4
zRhS;%8`s|v_v0NI?ct6IN;PUj@cNDd)Gc=2lS%?@KUH~!cTyE@ayhJc6K=Dg@YeSm
z8tSyx!43Bpqaz%FE=E3IZS{I#r|%<xeyN_tE{6XIpG&zGJ5gh%`}c%sa#EJkErf`2
zbe5I_LBG=1=yoAbS>lp-t{9enU5qB9z$yJ4%e_6eMujSB-5Zv7^pn{}qlnd;MM|<!
zu-xtEtuk+q`zA@sn~Po2ZPl7tqm?~DBf>Q<ePrsoH^A_Zb6j0H(SGcNVJF<?r5iip
zybLMLnItot;h{7Y4uV9(FU;j;Y%P-fPAtuu24mI$$feD+!#l~Tjt*owq~U<x3Ou4?
z<z(<0kv>CdSm)KTsJdn>nC9I#dkOcfwD9dC34cnjkNb>}7<u(Sy@4-{&?ChNJ&Svj
ztbWw-eedn4yP<6pQF>t6@4ERQ5jR5r4ImDuR85LQnGlt3%{DM2$m80Hlg~_}t;z`w
z=8z)SHwkGeqYO}9@U)ym)NIfh=%^@nKg3cNvC;M`scO46T>0g!d4}0GenZ}sn~~<$
zki#ib%n_Lh%@IIYy*YD|h_&+e=7(J7$-Lpe{yj?WDDJh73wOOP^w@CQjK*EL6da%(
z#Uz`XpxFh3=M@)*EVSZnQ-RJT`1d;v{H?*Vr!V1^^$8BjCs{?C`hh5K_(ym~qbQA<
z`7h5{Y6LD9910fJZvZrwwJvg*khK~uba&B5!Mv2!t33VH+h33f-Ol88h@Hq`#v7+d
z457<zvEAp$e~exR66SnrcPl%)MKLC_r5{7FJhL_?Hf0xhRXAj1Q9+5IWw7zgnjuSD
z%<aHd$%;8peLkx`6fCG^+_aIQ2fk0*GPL7;?1ndW#M{>|zS>{~W}w``nP5LFX@DHj
z^!mHw!P%5TL*KpCeqHA6mY80ad0AbCo^92hbN(-V)17w)LqU8Kd|{~5LjJ`Ggd}oX
zT<ejetTmA?5<qJ^>GtsQ`B0ioGu4JOUmDW`wDCo;^aWamOEhIqJUwrJ)^erf!aIeS
zZpri->b2~<M5=>?TPkh39I1dr#K$ooxtHa@rlQZ)Hp3R7!E_UWrenE}$x-avjCA|v
z-wbk;zSDZN6kbL66AKRB73gb{)lB*Azqr3N6QbL74N5N1QmY&y6>I8R{t-I7s*~5Q
z$Tvi|6ZG<DYoBY;v2Am625nmdW1X3}Nxx4FjvI*&9<3Wm16V$B#xcF=^{cotdNuTb
zSOhws%*B3amp?gDeEaRS2eEv6aDm0*$7hFxeD1c}7qdnl_LFi`>OEB&EbX2{pWWif
z6?wk8V2Nt$!dQHAfoY@gD@2LQ+Jd-qI`nf*a;cm=B*FYz6#-4c#h#S5>qD@RSM%Nh
z9GHOG)g>M-Vu=a2aM!M7FL}S?9U^?n@*RMCiwNifm)+>lVm%A%w~uZ7yeJ)lW95rM
zj<5Y|ksF9w)?K*)je6#E?Z_paJ$MZo`IQvGY<5=WO<udK9Rge9-&iYPgnCyj78Pxf
zla|_g6(X(*)duHpm@GW<>9o}2s7QjPwd0n8@ifs#Y4^>$f&h8{JSu>=Xt}NJR`2?G
zwT`V0%}KVed$wjX#g)ZzmP#fQp0T;*-F?-&Sk3dTZ018PEWIB>cE;G%gG{5+O==$c
z`-RcdiGmSe{e<)(kv)!zj0CLWFb{195wS+!o9)f}DNk7p!UK8j&x0GaQ>|->?&L9o
zfX@}WzPM~Q=_-hl)63F2>@d1h5<CRvUyoy3?IIz&99CQ$OMC>0S=AQdlTa6Q_Pu*X
z;Qais$Z>SPXp9K+H!;87tC`oycQT_n?%QyL=w!C62J^hz$%uLfjGZ!tR*_(0oUgkO
zGj1b!S$33)P8VHn`LHwe4-gVIE;t4xGke7zN~FG*Z6se-QEvoli*gTy_HLB7tW_vn
z6E|XAEQ~3;XL;LSH;js0=V$8+Y$PPX=-QB@dk*7x>wIzpS&C`-S3V_z_}E63+<AA@
zvY?4JN=wNGeBSm4az+Z76;-IN@>Wlg#q0%Bjic(i5h8*49~ru#xoY>b`*a7vh9&o9
zVI{$>XB7P=b|oe1BF9*I8ewAg4hs&4OQ-$LY7~kuTVI~%KY1eZ*WUu5DAB?x3VtHG
zjL!ClXxS8$3>)a96l%EM^oz@NFxs+jDNBo+TnYh3wV?071{G=Hz|G3Zp!7~e^Oku@
zPQ=>!p>(evR{Lr6{3x|B`=VURjl{(K9rx>4#{wEq&?z5oVNk~r8Gn-iL}~8@J3R=R
zhcjV21|-pqe|fH2#K~bbBO_f<CE28_H(Ky=FBQ{9#cAox5J^xWXG&f{`>7hfNt(>3
zS6hPIOdIq&jxZiWRqa3dTbZ*Sb5~#RSV)+-tfpTNx<C-Yi%0K<!q{DG?gkts=Vcb<
zj=b5jH^Spm2d#w>vi)|*<al2GHkD?@Iw|NK6FXcCCcW_`)ahxe8MA+*o=QlJLZ)T3
zzbmz5`OK|gG>Teh6U!7-*2J)r3SW=8ZJf&VDEFDgj*<WV8nh;NNSW*?wvHl0UwOUd
zanMVomlcM_oHeAtx<R%ZSMXZVp5y%raqn;9*R4*hbP7gIu{y2|OLq>g6>V{;rRI_;
zE)(pI2l7xQoy%asp_%5p@NE|w>`+B3w2vH~zvcs&5yeUqHJzi4E9C=2j#3&8w>h?3
zuW{Bd<$PaaggnexdBi%^3Ju*27}wnFEF+h)ntz3gFUqNWZi=yQe*Hp?spc!{%5(Rf
zAEF=LlpD`ztG*NmCeGPPbXBO(M(tR3Oa;!Z-;2}!Pw}`{Ngeb*#m+L$vX<O65v6?G
zS}x-0FDH7)m)JC%H%}fUBtW>-=?L@&u8sW(tV_+8e4YE^_R#3s<9tGPxtFW}d4o>r
zl?`-K!FzYF^5Y0EF=w~;6EY9|)A}_JMJ{7#njN3mYG)&jH5voAz_YEjjKnX3Cm98!
zKom+Ld}U^RMeAo)+CAUV!LOdn!BX|b<r&4FMb-v^z7@e2UFUytBkn#OU;b_#J~Bq8
z4n#pDtv~+xt5tr*sOivw>|DNixb)-@^;v*tD({wVS+%_B2%pE7zze(dC(j3cPOnqV
zOI^tCMb-_w*4)ilO+NQx@YIwxCUS23OXAn5(3`uw_>0xyW~|A-m*=?gqd~hRx_XcV
zd=TWEoE}~O8vPdF;Wb#gINZbFb@p`>qKk09M!4hamg~*=!%z4z++%0Q_=`W0;0@oe
z03L0&qFGrI&k{wdI4M^?^rYuyu70KBx5fPy2L&z8i~AFWE%(I<v69f!wzY7`r{v@%
zh=njFV+7Zy7tSw6Kd=cO{vdU;%`YwA*q^q*LG?osrdm&gf%!?_OzxGp3{&{c?QJCA
zUjtVHZ2_Jn?CvyuM6d*&ZcbS9<2x77gsx#TNZSSK2}lfX%jee$ZFG7#T#p$6NMyFd
zFKe`ncyBjJYYvu1H1#J+jl^m&`Oh{&3Vd$Mh&SLT5iqU^DG<=1cHgT42_4$<4bZM;
zMV+S6J=CfA-dNQjzTjAQyWJmoFVJQ5Q+IHZGwSWi`RvFA47LXhzW88^w*A=LHwmNt
zT1Kf$?&(lOtgH5LKhUHcK#3i{q={fL;hWVTxt~_#zJB=L3R~g7oKgm5gY7T23)?Ha
z;Jz@~39Uyms6)rKv!+h(o)MgD!5Fb-yYRBEP|WAnuBP0;H=D<^(t+8{%52~{+{?me
zzYe75VCR0d3bLuNtADrw0fFp(e-2vI+vu)IJY;L`-}@Fa{5@mRb|dkgJHg@%0sTre
z*@COPXtj@W<X1GW_o-6NMBcsAn25zA^A)&^SU)BTQeaV?YwPVODd$?S<A>kxH>98M
zK~0jS_{Kwk_VYzII!Kn%&b|ND1Habx?<1(YUd=g#yX8!+=0~A@6OrlH`1f2bH`Zdo
zP+RUXiloE~2b}<@2P{?OB$QYmxSZs&Y|RX2CDJY0z}f3qj|RwOAAvi*pbT|tgeZ9`
zoPq)}itt`MWzUVEX9D2Ewk>c*?`>}7xEvRi_<%8$3X9L!TTwEV@g}yq1R&@d%6#@(
zDxhGvo-W1U&@lJyQz!TXFxk}i`TolbhVy_C_fmkfGdvtz##7PsOH4yW7q}j`*NJ$K
zSPeOG)%V4{I#H-ukLDJF`_%LjatrOU0HaCntoqi|XsslpPraAw81gBMui>oYMv9_M
z6^Onw+2ABdh-j%6drc70#UR$Xq5YehPg|@@>~~V>C@*Z;LQVi8d4pSCRCgN*yiWJw
z47Sw#i9+?L!lIgSDcyE0F_?Swh?Q6f!hC@-IVL=X<s89)6tOULuSBfKBYKgd)%x?W
zDdrQsa>@z;QT<Pfg6~FR6+RU;?@#McW6+IKd49Kp#yensAb^<2fZTl;@3nC`Knq-E
z1OXWS{tygOd{@iBh^J?}%D|+;_|irr4&e5Za&}{EU<9Gc++D2lz<fYcitC9a(f6y*
z#Gr$;$j_;KG30;8DR}j|q}$!i<xhT6!A-6F$d$ZBGx!xC%%qAl$t&0ZWa;IxcPD`s
zgdvpFVDR0lkUWL_9Vc_(2b2goR_++acNm0&c8VVvmRlO20}Qvs5srE`Zua^6iC3n?
zq<q6;D^k53+`}(pkEk|pR475X9<U`CW#((GK2Y|PB=m9-L~@Xes(#8xGx6B`afciM
z-;*#fCU99)32B4wu56eiP>auV|D92QNi;!7J3IdTfN`+@K+~325bGVAa>d3Su@68j
z#zhPZ=wScx@BjmMWJCL?eY=ng&MnrqLurPCUz|Tb{j`+|5Qw%#6Gb@(fcv8$BcIi0
za~%&mV6cdn=Pu^h<T!%*wr9Q5NH7+^&>yOfXKo4#*M1i|4jU5wZ>@-VicI4Z9L2xB
z<Q>!#i+S@)@4L^C?n9qfe>+f76XQH!=Mek^0;CGuQVxIylt@BvczbSB-%RMvblZ1@
zdWem$av?2|=JcyN^Gp?q<g2)$$nXCCpF3UcLae^M9trzbUp4W@7y2>KUIa@+zN8fS
zBeqd;$r1Le{1ki=_lu^}t!)LNgZ}9N@xy8MjUHZcQc3so*~A;h`U%<nc5id|h3@Ew
zvA$Tk=(&bg^i-l2kIQZQ1$oz#Zgf9ZqBTmsh0^nsct%gP7@P8A;#Y4dQ!55%@x#`H
zXA&ebCYQZ$8?n@oliA61l!#YFYa`|uxC$<IHWulUX=^B+Lq`At*zd)jidwg_pEtmz
zH<BQ6l#slE9N)bvHR*!56G?_4cfwS!%O$g&#JU=@4_0Vza7xEkqVQvA^{H&a6Ov=!
z`*z^!52n2+ZRkE<vY^}orUC5>(_iOf$e`|&K_`+)%+=gnDFY>?jk#Eoqc*ozm%vPC
z_>);i$#?jAgEZ{DGg+1s?dQh5>Otam>(#+#W)=aZ3)!qZvtEFvs4E}7`Eq{HBo;vY
z3&cu4+Qq1c$nK}eT&^^r>wU5xyj<QS$dTBOb~OoDWZiUwaJ`Z}5YU7)&H6O!Cgnv@
zD_Li8^*J54I~@{N^yDs3SLol_BKnW?pxQQM5_g4PF(&tsn^jyCtI{E0<e_@e9Rxnn
z@M&?{5V*DFUMxMKZuG59)P6F{xhNHiLsfqGqwqxXdu?VT><b!(e8)f^!&(_ccPP?=
z<mt*xkLig%jd8kXgwWyHfn3YMjsb3%T-U}ys)f&<JTJZzz^1T2eCR#J)nZs2d-vrn
zOtCHWjgs!Wo0^?s(HB8qkfxDmn~J_Xplb1(RJ_Y~`txnsE>jBW?4uFb;5JntiHi|k
z%kw{^$;}_^rJ1?Wwg7=D{^{E<KF|Ga%(Sf{o;-yWX2dCr)~3CW7w@QlX&&~1To9^v
zlub|nc~4C^@|ZNqEd9ylTok{TkzIf)vBoO9;cL_P^?JAl`+vNng{yh$3tC-Ke!#Cn
zpk)o3+24v<BfTCJFZ$MF_!mrLyzHgz+!!EVUNZR6m~GJ}6>GkV-ua&Hvnk9KiqqmB
zD{gYobl*k*I;X|XPQk#J*%3!!{$hMFqsjgDSjS~#2cHpaRtqOSqI64u1`*xJ$<hm_
zOo!_kJO9LdxPCh>ikFRa19Y2Xv|eFnhw%vnkI_c2#wZ3Mt)2EEAw4IGFV;7TL;TkI
zrLSk{MIt+b4qdEGK~So^pjm(b^FSCw8gMDOz~Q8(Y&jw6Xwc{EE0zFV5JRBgq)vQ*
z%jlb*B4=p?2zM`1#i^PQ2niAhCS&647!D<2JyaoG%5)!pk?m4ne)=@OA%Dw1&sQxz
zVXt<#$vU$;S0!pgF~)&#B&SZ6$l>3Kgq?(jGLgUg;@Rv+DpABgR)y!#%9oLOmH8sK
z%1iImBy@dnxj6iL5A$f`IC4!wsb#52@x@tm9eb!}l485?leCkou)n@&o7WhyODs8*
z%27rAt!uSPo#md!-;z|wSdeE73De0FR%l~lUFD@Y#jLRt?$>5FU5{!z4|4ON-NvQb
zCA9Zx%#8&lYUC>7YQ%f-ETu7cyH~TUcB^N|v6Ma~MB$R$_|U&51EEC;zQ5TBL8v*&
zzori)vQxInj4#EO9WYr7w2k{n{|2HzkY*l$kvYw-@nlt&{Q4*N=iS%9EeOj@abut1
zhP`TqZ45eYu4IGFk%g=E>YQ)+erT~+*&#&SL5-17<h#Bd$vVHl^q57oItY#ScUxl1
zJJP}^<+P0{l^kjKNlCK-3Cq3D(b;IUv8p(JFOdX!<Hi-H5aQR(XkA(b>uB>HJ|Akk
z^djOQ^pkQjZ^KKtE`80iSjb3MIwh%VTFQ8LoMoq`O+}02Uyt_N(5fr9d$1KXg3-j_
zmC9i_v(K~s&(C3Ma=v&g^SIMWj@!VYMqCwgMKzw<hz4S#JH{2~gt{n?W%S}*FZmw%
zW6gcYjetP$NIx&2cKb$>ju)wdg!X@H{Q)h7waPCi5VG_E7g6FPfnoX0fwtAM2a8V_
zI>FNmme!j|g=Oa<Z{T*4xG8Rb+hn)7xw#?8yx$L(&9j$<zFbv-Wfk#xYTH*Hl&AVX
z9qEiaBMYMTOnaJR9iLE|$+;pqE_A~D+RlA~nL)u}2G>V#I|T9xrEIc!lL$&#Q4y;r
z@_biB*kXpK%RAZ|sBT0~&c!rzQGYqOb`^xm@gQtc`i%Dp@_MB+*I^w#t1eijkcFT8
z$pbaOvfjH_%b!p20T)-UfSX)sb6i8WJ0&3ajn->Rglqej5iHB==oNdpb!@86)DJUF
z<vp55^A*|PD@;;I22P=qZic?X(NgfM0|o8p??xgB@NCf0aI_~3)kL0_2AJV^9lSY|
z@BZ2tYT%LC&<)(ffi}Q2jSTbl!X^XiGUUF?5UzDdZr}&e#h^(yUZ&nr;SoWHRzCNB
z9sUIT**t$A;9Bd+rCXNo#UK%x76uE4@Jm(wZl2i0O9;e^mIG?GJhC~!Fp>rSKkc3M
zTUE>Z_a&v2?v{>Cr!+{TASzPQY`R364I<s$DWM{pt}Pv#E)O8xh;&M`f$!RQ&gWd$
z^9MXXo$K-!7kjO_=bl+Jvu5u1>t2u{QFV*f4#a)PW0|mp756m}MPwVNEpA$Cj*HUJ
zqzi7#uqlQDXxqyMKsd*m=$nbf)`?G#>O~0E)C+p52|UjHZ>>bYQJTsc2!))W7BupT
z7RXT8I-rmdH0;zd0BMqp>j3&UENiUiT@YD)<vD#7iGHXHot02Y+c-gEobAy{BqVB}
z_;Us!udJW{9D3i$VtQ8x6{=RS(vlTEHCdpcDMtBu`(C1^?=O)$^~aid!om2d{3PT_
zb`#9~iF{!W7Dd76cm|F(-9b1g>o(lq)4H#NX34i7n!aLmTuU`>sv>F#DSFP9{Q{6Y
zA@$B*n=sKkh|YWSP8M&={EC)1BPSgxnciDEls7jeFNL!qxalJirVvvpEU43(O_kt8
zkZwum&OWH#lZ=mXmj?|Gla#k*V|q=h<T;c)4|>o=epY5?(aYqjZB!T!0%;_~lZ0Rk
zlEqjQT_~mI`W=-tCn^$b6OFtf5rKl>l}J6`5fYbozf8st&d$T#5L|+btEWnpdv5{_
z$_xGdwjD!yL^^`&3@y-YFH{n%I+vN#L?pKzeNP3C3LA^<iVBy8r_r8H#iBYI-6q#H
z#yIWw*ODr|o-cMkdew0I$Q_&hGN94X=dgV{%^90?9Ef@Gg!pQIA5;hH<md0O2)k1t
zA_d`rXDB5<1bzq45=1VOmgjzN&#&>xCS>sR4W%8V^MaRSv~h2&rCzmJlTc&sN0a@A
z+w<P6;xVh>&zI-6p6S7(@l4=)1ZRm|!h~BprxAq>K0BuFO99elVNkVbp6IVN2R@BE
z0@c)x2X<9LD{gS@XpHca@4vDq4RFE(nHc+7Qmr54D>ePHO~iVa0>~Swu!t6Ats;L|
zw%yBhuM9DJr$S4-#OTw3E$tu>@X;46>|t1hMP->yubnheU?TVP224x3!h-cl`MI(w
z)4&2Quh2-ug!vU!^RPllTKrQyJHF`|Dm^WIaN5U8{V-}yVg~LywK}L0F_cr8)^eh;
zzE!hN$P@VZ13r$fzAME%x2>@&J`Ix{MQ?z~CP>>9WbqpMo2_R<yeE}xUb{%>mV}(B
zze^=~QH;o`DJ<;m7QU|-l2lX3!4gNN_{pHYzsJ&)Ywr!ZYXQ{Rc-0^VU#dEf+6k&R
z!fjX(Gald*e-Dg#V)4#yJb<Aj44-zZ6hgb4_yeN(xUVtG$h$a~xz|=oLZ4TgWOYl?
z_9C9C*@q*=7Fwfmey0J=qe6DxkK^6aqKi9$@%WE>qwYT|2v16xDPyOsb>5}m@8I<d
z>G-fBPlHvxgjY98g1YH)CI9Ua7okl!uza<7QcT~UqLcFMH;&uQ9E_6)U-r^wqQ+#t
zScz!QbTnCzLg`zX2P2)$BIFu<D#vHS$F6Bx=!_P^Frvy0gTMLsg@Aaf*6zCgIS8q}
zM>ZIi=PFLn_8@W*;BAeL0sex;0m^Qr00f@&Gu&k=cvxf<6NvT??ItC@yV1kBm6q7L
z{aPB%Ha}xwG*Aw>b$s&u;E41KCF-d<=J;|@d8=dHN`&;QE8)pBx6M(p-JZu`X3<A)
z_5-%y&O23+(;T1E_)&DqiMrdC_qwVBlg1097Tpb;TpV9U8aEs9{xCq_iU!OIE2Ag@
zK6pJ=2NQyI3u}Uy^S!!I192&F@LV3X-tGymnarD<R%+&24=ZpuH7zGI&+#ioAC<}D
zQRyZ<C<+%2J%UxazYE$fU?#C784Ez89-xXMdiK?7&oyb^JGrF%G|<~jF9z7@)ep#*
zAHB~#U?IUY@MybliLCL54%l_%jlY9-G$0HG@HT4dL6aEjxcGG3yo21rA5?6@_c?FQ
z3p_?1r3ASdSM*jKiTC5G4Q`eAq?X#+wLu^EW7~v#6-ickmo`<^=jTD=p5(`aXG<&-
z&#pHT!x&))@-hXBSdv=Z7tsXui9xjj55e4du+2~4t6eJ~V%a5&F-IWXK0qds7q-3}
z(L2KlHC4p>DUaLbYLpB>mExRGk2s?bE)y{UxuUNUKW1d~k`*l@9qB72lYWlt_rY?w
zdj<u{S0<iG6qu>!+qbLq3!EP;E&5mjY1W7@<kRMTH(B<71(%QuX2Z;!7neC*+fbyX
z_}h<<XnE0cJ7Z@ZtWNhD!EiN`H=X@D`yZ-0_DwTvwyIfl^;I)9AEkP0>Gp=G;L)hz
zKuAU!ic*en$Sb{1?03J8NT>k1Oax(E5le{Ous*hh>bKR0GD}g*B;lkS>gr}+)Sm?<
zqi^G)QG<mpG!CTgiWtm$GE9q2+mzJIpd1MPFb1&FBh+N9<Nf`4;&3!Q`${#R@evWj
zxA*Z+`@OHnXC{+WL-_db+eumexC}2L--GG~ZG`HkMun5;l&}@m&8cti4!?jX=CxqI
zE8X9+sy>y}NKejx!3N>R#aDZh$As?eq30~OPalI3T#I*ZKK}s9jYrpu6YMj{S>hRN
zd2=E07IQaK85P~v+_L@pVDs~})XQ?3ikfkA6H#2^&Rh+B4M)qTre3?kPEX~Ye=M^g
z{h9L(_y~2>Xl_{fu?;Enj(m?LgcPQxD;DlkyfhQ&akCm{r{|;E#3tg@NJ+7fU8NHN
zYuLE+a&vI&Oqb{0Du~PRx94Wnil$xsyjhV-Zv$r(k8gEocyByQ(cpTQ;>{o{fW@l)
zDXn8srfH&Jr#f~zlGl5(*SlDz5A9s4lU}q$l~uL%*Rd3P#dzpATqEjxYDEPL&#)cz
zBlN?jF$<D|at|1H%$o3f)kmUcxXRA~2M!0R105NY(UbIycS5!OQ7G<I&DiCRk*=1C
zoMCjXnA)K0h;UE6<P8j1w`4q(sx|%`NI{ONT1dz8OYspZRC<_-2f?pfs=Ssm__7rN
z2%=A%6&HQS44z=?S`khPjYWo1w)UPX@?Ep#rVR<ko;_?kiM+|D+Yk4K;lES{RyZ>N
z)}=W6%`0UAgJBI)d<;ZyXIjwLhr?~pwDt2Fu?DSI9OVeO{DG|mEB)u3Dyjx__Qu=k
zlyQ0NuB}psL6mBPfP6;|3yl@?>qjDmlw9by&*L+Ww3Ga(x*J+idh|bcswLd*$xc5R
z@6ONe<VRL%W!7yU+*~c-sNIe{!B7=TNYQ%!ZSQezMw%+oC7LAad8EL+_o&0z1#)^v
z!e3A)DLwEEQT=YF4Gj63CnHsCHs_MfSkqp8Odo2wKK)hGt-GY+Fqp?5j)I3$t0}#C
zO93@YU-pAj0U_B&@$E#Ni+F<X%7z{{_+eGlVRG1pK0MLO+xq-VI+M<Yu`pw#iqBNB
zDk?|nx<M83D<R1$hu<7TLFQXX-{z2H_so06miwFP#H;l?@J=0)HW2wNXpz69E3m{s
zlzvs4*XD6i%{v5Z8z^o(Z_qly%c=vtx&_kge~w9Q!DL6w|GH44JC&9tWU_wov^Z4{
zkLRUHMSn#d?q(`WwCd9Mi=l@SgN@ifUSzmW2tBGj3%CzHYgj^6(~%Lltn|~?4o7po
zZ9Gz|UhW)P@apO5Sbo;?A(r_(?hZ5{MFenamR<p27`Z$NOI!EpRKOw4)kBG++O%>j
zYR<stMEh6yQ!(wps)uOOD~7+JxMXr*O9d88MKHp%T9xgjdWM~kU9f3b`1OQA!KGVJ
zn`7gJ91ofu$&NPx>-%2oE-E3tr0*Ti67Yz?al5?F+TW^0^>>l`U|>f|N8sSnRvRVW
zErYhQf%zh+oFQGW0><6&CDu+wkfJ){le&#fCXu5~s?pXwFP5K`Y;69AZAB?|PKWwo
z17mrXkk?i8AM=L93Y@qADJ~{?wfB(x54u1}-`KTi`{%lguwgx8f3$5D$7FcOGB{n>
zbo2v7?TGYmo_3dR0U~N;&TT>_UoyEeCR`mNw$H+uRqj?_qye@>Ho%H25<Iq*ObI~Y
z=V9lyaO^vZSku<mH?o)rZ974=41Vu12g1ZVC?j`y_)LF-`2sZfEB}jWFr!ik3Xk*^
zUd%zVa=4z0VtMbNgwxT<7^NK>f&Tql#2A~C%Hz{~CSkV9C;JOG(uVHSF*KC7EeIuD
zu>@>RZtmYh<k#Z<S3?Fspoi>R{L8#-_ahxPR+2xAyD%iR=-n&I9e(0ad~v@Xy{Eh!
zMMW2wjCnUrzkOw;$OO1KCH6M%Zw&dY?a%kni*oU?3k)KNCKY65bSRQ21PYhkliUW(
zZpw^oBEO};?(sBLXbxlsyFF2}+mQJv<|@;CRYu9Lt4Ej=elmF$AywvXu^yp~RVV{&
zCIid5t4q7w6TAK9W-i;L_2+s>3P+qGFe+&`apHaGdsN%`5PW;>6hUgUI_~vaUqvrk
z+iO@H3<y3;&0$9N4aLSB4G-RZyT%E|=)%AVNg6=#PdyR=7Z)M!MS9Ycq!*$ly87_j
zTA$<co-erwXaL44GX8~;-q~_B3{{S`A15G}xD0+?faoZn+kTFXJCgG@V&t9@QR*8H
z;aP}B^)xtg3y)J7iRq})%(FW!nSu#hpvaAC9p!bB28JduQ=|971ntwNZ*Q!+cQz*s
zu3*Vs<RePgRff0%(Wa)$yn{RN$E57MP}<J-zmLZtxVmhZqN)PirBxA_rh2e4AkNx-
zNO%Ef@IzoIeNM1`@&pR`)1)ORJ2x~yUj7~tG%k*bGdNf{<(c$!&z{M(*;6Wk_Z*qV
zo7Z`ofU_=u#Xig0c9hSQWor7#{yu%1G7y9p{MOGK6I&tV{ACyXGoMLkRfpP1!VGqt
zLsY9n-JxY%&Ao|pgv{laSo}wAxngO4*N97Ds41~WchQW&_>{64iZrmr4}>c1y~azb
zW@ZPCJxz_Ks<h@#iOqC6?Z?=Q%O)l9naEwPm-7PRdWc!98K;I5ejEb!oM-^!BW4*L
z+PD2y(OFkbCzp0*y#yK*Oj>S4Zxk!fQ(Y_-+WrjA{ubg9H<OQ2nB54*!r(3<LEEI;
zM#S6PB0P0GuH4_D0*P?>tZ`+tx=ABxum$kZ;(gMuGl#CGu49OM1{^0va5arq&Ddr)
zx>k(SKx+0wo&A}3Fu4l<rv0fHvS3X!RP@jpxlDT)JGu02&7e)^kv;|WCcqmw2dx1$
z5q@45BwQC)wF<q#<1Cy*<yk=7Xo{WO9QmFIoFv{dcE^I9&#r89jN3{$AlOOq`c`IF
zsJaq3I-KdnFI?>n`a#DsC+LE~MV3THBvlB~HFIII?7GlGDKC1)&c@EAOQ-ru!@UJ+
zsaR6<=J6f+G@m(77Qt?#q(z1=r}KsNUXCJmVv@`1AaK}U9zmBwE=spTc;L!QHsOM`
zN)%B)+3Ax+Iw2%><0+^U!@5MV2hC>cV@1&+Qx5oc>vyZ1!ew}>Wu(G8Kp(lOn$Py0
z6pxEMk|p7U&!(PxZXEN$QKGo+Yn9E&M~a5`E5Y`-w<_1vmNPEHV~zE%NLVFeBu5+1
zCLZ@aX;|re`1?#mC*u~OoXARQYFB_H#-Jm4i3cKWpuktrE_!BKDTN1Zw;KhgBc2-{
z!ED*%H-36EXqLezue5Y1q6n0Os`5{sRJ}|7S~6f)e(~PV_clEnERwTiMMh=Oo!P}>
z8C)D=DeMEe`Bwinz7%JTFqn~}9Y^0r9%X=flH%-{fX5-#iCH4B=|lV^%L{x^u`@bn
zM#3@Ip%M_2+*EM%D-#UoT?vV>JPRU5cs<sSIR%J?1ObwSSPj0a6IfY3WyWae>bULw
zsyH{>KcGWxcvfWST`}oPbwPvDFsC?3Xr8w(oKmPltdJz7uGjKRqKqZI&zaV|83#2P
zi1sGKB(F-h5}Eb$*}qZNH&k86GU<|Mlnuy>m6cOb)7>uAeuPItn)HfDOpBgKir_v`
zaukhCw|pCnb=2v5EQ1C+t@C@$sprrNg4hmz2W&D0)*`Kr1<%gKdYD{-xaJ>1-**uJ
zz&i6Qai(4}PIPt<ICw-DfAi5XBsB*SVFo#1`|Uzcv+62x(B*#Pq3XN7YTOl(Dd-!N
z#Kw;i?~W2GOXy~4%OC>;0`5Ju(y-iV&xv3?C#hS}TSWBiDa@cdkLGn#;KQSd0N4n5
z%7|0y@qw;77xrY@6ww4vxLU>AvD;Dd7t+`KI+95uE1DbX^6ii3KgUkLeBosoL{VyX
zu|~eA96yl*iIEsiRrvNNNkhOEu)ZjcdBN#ZsX~ti0$(`?v>Qucn}QSN{8-vqR;SFz
zj2lf6o`Mq^7e9%O)qOitjT*jn>wbAC4mbF!d;h+%i@<Z$BgOY(c!s@NCZ208ayHnc
z6cb^~IVmqS0nq3mFz1nlX1jmAfer8UiHpCs-eu>-Ra~kb$u~HtO;D%8!JJ0#+w<(E
z91?Du>HOI@!0Qu<Z<8PT(BURW*va{G*CUnOpx_F_Vw(kneI)%x7Ld>9dF4#>T9`=q
zt=7+(g;)kgslrW}8DT$aMB>aRTuMq4z9??5n=Hv6NCuM3$x~?TR0QS{ve?{H!x7xJ
zpz;1inL93vqrNRkeL<~*zwXC!h*~CYVPob{2#{cy4$|*APB1L{kWi^!p`Vu$zK?l@
zmimP`2>P~^gZuauJJEAaROpYFd#nQ&7YgDR7wf-tRyn)jL=dJFhLtxP9#i=ByoNS<
zu2|bbbNNs!SJ3fYk_W2X_uL>i=jgtrE`|M2dS5DC#K~$BzKjr)gzh(jFtv)`8-J}W
zGGC?Nmr=bJai5=^=larX0H<Xa7D<={A`F<oYPu?`Z!-y&1J;^mjIF?Qn?k|SP#XVx
z)@Az9Fh&XM#562;(XA+)8cI*^Yoe6!p8Y34<O1h5yS)}lVqW=NF-Q2~eyG_;Y4|<<
zVtIKiGm@)Q(1OA~l7u9SZi`&PklAw3baL~f{2aXDZ~ID;MrB!x1qRnuh%Kdr@;l<g
zWC~f(4XeRVSmaz7necCZmFh)s(tdV$)V5M~wy>Q{v0|!wKWK`LgyP1Ti7VG@L_&D(
zb>+PRzKSxHxkL_l*_(Iq_)YlJza@IA)bgXh1Vw$&)vw5^Va+1P6^r2AGhLH6hOg9!
z&cDoXgZj!q$nFqbUy$iJw)Bcx*xGaOa?-jwL1;32u%C$E&2P17&LaRmQg6*fXIt}!
zAaod*gzE((8YU4em{5|7FhC#M#Kr4KRVFfqG~_&_`12{s20Nd{mk6KHyom-j2n~-L
z-1T^4neD~OJ4nL?xH?+Yaaw+5I={-I;tNOrWUNe`q~;-6Qi4_lsAXBiDE()<12;C;
z%R{ddBc#u$k^##eH&*R8t=|6yD_csHx%hb~^gbP&lz0#@s6chQbE@s#{eoI1jNyAu
z7sG4@${GSV8yK7Kenp;~$%_hCUB-kPZzy%oP<<o?2Vfj^6*SfAQdbPF=!cp;m(1f`
ztQX8x{o2-%vK)l5-hLf{!CR0}J#xAk)#+E>WJnUv@%gySy6`D)&N#<nsw#;<#K)Ii
zU4@9OOKv0=F&a5t(;CgcHaf(4BBl~H;1HaY%gx+_mKDmgO&ll8{$SdISa6iQ{&R(v
zC>Zj551hsrodHC-Y1|X7;!6ooMH7%;W)0#ZP{T`+#;o&71ZYwQ5Vz`icR_PTKrGTl
zS7{UkoJN6<A3Vpx!HV3Dp`NS~Dzm9~l*Xl4q;q>&eKh`de-vav#iVQe_aG^bs;IO#
zOj=lw$W$?9w$R@J-FKfAHc-efL$M?uvDJAy6n2@F+%K^!BojEB(;;8S7ZkvP+oAe|
z!4{PrZc#=pJs0(AMOE=x6se=d^<_G+mIpM<znq?{vuf#15vwa^wMr$}1tkhq56^h}
z8h|FVe{2qrl0jKuP4S4;)!1eq9)4HTR^3fWjRR*Ifi4p1h0mbKsKpn5lPG7H7}V8$
zf&>s!mDG}O07BPz(6PZ4VJx~wfu51TnsPj#itAv3S??Ps>-zu=O{eo$GNrEel)zZ@
zc8uA>gcj|`i$EkPxd8VEi}4jY7B5U4iW~1UM_(l%LNC$u`)d=g2>l8~!VN{&`@Sf4
z5Cwc7{u9N300hS$S}b54M_F7QzHZ)uC0c8CR{6au#B8+s^T=@+>OgIeR8)i7p8@bO
zGEK}n<tKeqzf)aVV1Xe6FDS!H_eu)@pzpawY+FaOoU!RoF|iAMdFUwkeEJ4?(9n`d
zMq|54XUBA|kF&9Al->t`^m@-BE6)I~#*Gn}Ar`e$DpGqa3=lp@XHFKxUcxD#*TpBV
zRl0xFiqlRzdyYjWXm(1#U3dKXKK;(*p((YFQ9>SpjDj(o87BhQ#a|=kJNd^#=GuFF
zZV7jviVMKh(l<q_EZ%ngWK<;J?ST5M&$a=fO6<J}Swr#XCKVk~wA+F&OY3v$l}yCL
z1h;icL7(aKWfE$hnN$xoahYuUY}_IE2m-!fq5poBz)b|(Yp@@WpzP)<Kjs={(<=~N
zIIy$ibM5=O_AxFZrPd6H*5ySHYnSC;j{PyJS{QKjfd~*<FR1l;=$dF*tQhSVGR^hk
zghakfL3bYjk-yn;n`nE)8a`F1=2!&lTM<#}R+@v$GqxH1&D^B{X7mK}H$T$l)zwqD
zv1P84veTEikBYZCY}p9E$lfDo!yLqe>-k`xu^IMsh@~l#mpW_7XUa!9>9A^bfUSyT
z`Z;ss67NXfd4FMPj9Wj@_Q_|9Q=ClRFeoNcWbi`OedWF|%>{x+Ke;CnfujctThH)u
ztiC=w!~Im3D#d#-^VwDDM0wMBQV%&yGa&QLjJBXYz9Sx@qf<ngo0>{73%pv!`L>p_
zfT~a-y8Y0hI(oWx^0H=uHdrZr8)_aRk@RQbEc<7d)w|K`YdLT-*GbG!O>xK!P~d=r
zAY<<26FFVwAUBh+-)4uCz&6m;LFblpQ2HR5(G)M0!Tj@?e{wffA$Lhc$^vZ}k%LSr
zQJNK9D=YRknJLG&W9?Sf-sRBDA@R?eAW6@PX#fzQ|Af&^+%6<8#w%JF@gZFQxWdio
z@=vw^1_R_ebldxj2=Jgs-&s)vbWI%?Wpl*ReD+Va$>PK9H;aG?Y~H@Sd2p|BgcncU
zl$aGj8Ej6HnL-GOAX)DcjMp~`VrL|?TL3C8k}Mpc0UV(vgb(DY-F3nq><WTMj%J-9
z=^uS1&$6atBr<?qq-lLSFVQMc9iPOWSgWkrA*Gg)Qmlx91z|2$-nj%4mwoprC^EG{
zEm!{K-J_z>Q}p`*Jm!#*XZubdzOTk0zy=hZ|M@zemp3KK0;*8890I=Do3&5pSk%n@
zGpYVR4F;Dri4h+>U6|d;@fno9Z7M2ak+g)djsp=nC%fB$H=X-{hz{ur22?#HeV*&J
z{K=gq6j+j{x^5f^*!}+3ZUEzau&jYIB;t$8ot*&O8y%qJX21WeaMwq+(E*Yd0IT>~
z!m?*3bGtJc2+-#zN(Fx;e`@|SfIMM%jQXa4OO54Ewgrpmwg;k~YiM1;C&u#apePf>
z#3&sxv4Z3vS9uz!PS-Q(t_LIgA1$)~Etgdzk)5(T=qlle5&sOgeaDH?O#jl;>$U(S
zQUk#CSH6D1hO`{nBJRMJpAC7u``v#onfb1d!AwfyIvz>X7Ds*8B{#t4>79c!&`HJ;
zSRvU4$f@<;e|c|!GG`PEY5%=+_vcY&hO-Kx%^uIacqU~`J3;hFLG)3Uu$FoI>LJwI
z<2JcwQm<nmCTKNQ#_`g<)1>y>p8r*7)A>rIyItIejUE%yhN4uX869JYTO$yv?l9|6
z58Clxgq%$ylPtWmw{sGiGC|8Ui{Q||(w_x9`&Mb`e_0u}#6KunA+s`ky7mJIVg<$k
z2R?P@`fO3O#n}2|us!fL;*yOv^&wTkpCBiHx;wxQ?HwJZn5<Of(lK=DVsP6Wxy#X@
z10YI77d*`)Asr8hSv9b9;0qNM`*Dm4AKa)eg*doh8@dFSHXZc?P|h(bwH`q^x^V!N
zK6N_hI&$D_@V1X-xA=1oCyk8tcLsCWL#w!iuvU7%^LC|JItMgNyb71qZeiL2QDnd3
z8`BV+Hgp}b1latVA8$Q>#w%xB#w_|>4Qbf|B4iEf$M39(xi1+mzW^|eNy9kQXuo3R
zSUPt=QcS|CcsgYs`)_3eu+Xzxm=(~=8e^Um{`HbwOUZDu>`ma&;0d7L`XL_*u-L#^
zF5Mk|Nc#PlUn}A$GSl{J@f=U%&S*`vXnFH#MyB^x@teFjAqRYt#E!#&4`Vf@=TGwn
zVE}fW#OdoMBncppzkf&+kVP<MFSvfLE)R(3n&oc^b;As@_A;GXTr%yeR86md{0uk{
zeLl+7jokh<fJ@>Lp!m(#l{+`_C$T!(%P+{@HBJc(<y0ytASax?Hvk2}q+Q@c?JAIZ
zgLAQn?}b-82Kf{+tHe2vmUhOe*M9REPD+AP>vf$CwUcw_l-uMRb#At<p5z_GSt!uR
zi{2+&uQs_HfW&aU;y@aS*uT?ASQ`5t2JZqqc8rq#3jj5m_*6s>*EaAzKF_hBt`Ezf
zHyb!$Qd2j7GeTCHZk->#lNb1q)4u1V#1N3zIvRk}E%8L7-(K9F?y-*lf<&X8Yi2Wv
z3i5buY8eSUq0D0J4+`%S$1?AdO-oDE#)J2&a|Ab8nB-gJi}l1w<gx$c8>OY-%k$ay
z_M2~hn7Lcz+VOj5q?`tj8c!^2U-;V5E;irXF8cqKujsHh_iYzQQ?c6{&$K_+WZo0w
z*E=O)OtYHE^|}nNjPNj4#M1*D<#R58f{MOCetx#Jm2!Al>3O(P=dr&a;yGDFpFtHG
z2(i8vgM9$gJUh*W*?v-de-8z<2t6r9+r`f_O|0DVbY~ib)8D#sG~rZwPLCMQmRP*(
z&!tyd4tIUI(Bw51D^5?7|5uJQWM-ew_1EC(2n-9(rX%UT*a86!XI5enFdVR;vT5en
z17+^we{<W`x%KHwV4=Szvzsj2ZDqdL$evR{7P<)(`Ys-FL7XGzViwt1ZAL5RY;yhp
zb3Lu5U7Yv&pmLd98A1?h4(~fZ<Wb$}Ck_pvmGSc(Z@xhs16DyiDyK~CFOJrlxx0of
z$bc$Kvs3^@EN?5@pA+WxP|>*0W3G>$#IC|2K;RfEdUx*oQGsUyv94PAo>}6qU|8+p
zM}^RkTlRB`&R;{Bv&}wdmvw!W)Kg1vgx@oDgo4>|#2ZN2o5qP-xX!0odYQf1xR{pQ
z5o`hmKK&&i5l81_EIWtK>CUD{xWlY+oqg;ZYyf77ML^+?sx~0jCmDmXSY@g1bA9P1
z^Xuy3_d007CfwtRwAD}=e?hi{M_IO%Pu<fDp<-GIcj$bR*Y8C9=&OhB$CQpA5q<Yz
zXn@H#yaeTXxa2%Lxm^;xm3xb=i?^rrcSRT@i|F^cI^6|5B$e<!ww`VEzm=HOzaZ#b
z?hL&WCSGW9m~U_cEqH~KvTgVeM{KieWIwL$;<0dvi3Hj_V1zJD#6h3hK6GxMDm1gZ
z!TZGacGe$gJs>U$n;jJVJEpVVsKr-2%XtE-cg=a~684&gwa)MQa@m3YlHuX*W0w`U
zk7%iW?N@)$g5pI&t<BgcKl{s6$!-YXAOh4tJC$0`2a&Ejj*Bf)to;Sbv6npN<_ql)
z00%L|Y0KKEQqHbRZNf6%?VJk3ux1ZXDyem8=;>bP#q7!{>)5kUaYgj^>Q|V^$<%Cj
zM^iHyZ~6Bynz=kki>4NR*eZPl`)l%DxI~lp$=5EjzC+i=oAl26S3t#FKzv6Hgu&)e
z(#f~tZd)%GZ6POHKXxxqw)f|R%ZA?GATC;_dw=#NE`A$gyEDdkDHOq!wxobc&SPlp
z;`y2+L`;&)PyL%&S47LzB#_MG@&a@S^JHV?;SsN5n(B%qpFQ3jo86mloJCyxo&{R&
z(tI^51?H$ulR=2FezZ1l?bCH82Dy9}nRsd5wP!kz0@`M~?x`hOX>lR)M+82qdtC>3
zf$!15&UE$7C2^)ZJi<=3+4C^J>m!t2A9$O0X6u~h8){4Ssy`V^dTfps?E<ZOO)fNB
z=dfMwa|qz-kUiQKTZ4i|{`iJWs}`&wJhVg}ygO-Z9y#K4TT}2I9)4B1t(%m~PXFSQ
zh7IthZtiFJMp~UqUHC>`Tx*~jt1}pdnmssOJm-16^XL@l&!>P>ZZb$(Ehwi=ckCpW
z_vhE`D9$MXADw5QF4$aT%=G!`(4dM`twfw2Qa?qSuox&ylH_?NdZUZ<q?U1;IOs%B
zgb}a}*^_|Q7)Mo8-#VA{`sV@)>Ip_t$|YrH9I^s;Ka#aYDPnQ+&5``)!o7e?;I8Ya
zr+34|-H#Y*-;X9dme$Pq_bv!ZQITIaD>G2apBv-!flfu6%cl9y1=+lo_oLb}=EOuu
zQ|^AG0?Ml?j2TH}`{x2+v#d>VZY4I*Y5%@fNT#K)-Lu|D{Lck~FT8m*<0Df+e^&~4
zk~S_osCf1F&wuY4C)d*7va*-|x1z-uek#{HxH1>m#5nj?LcmQ}Su%?mllheemusn&
zPOi8}lMv0Q#5WSU{`>XE^EVM~^!_yfjmm#bA}Y4$vZv#`7ht+RTRK}b@HzT9dyT-8
zx%ix`e|52rH!|)DR9)5&@ST4M>;Ft;(9#FmplDT?=8sc=It3sAZ{FZN{a=-3^J)OU
zJT~ei{NHW8Kn;J6d`JJchH5|!|9cFwHUIO?KQG;X{pO#y`@eVU&-e}uGXD(}{|v1E
h4HW+$28sijWb5&)9YZ;KAW8Z?U|ab~nY_t|{{sUgqBH;i


From e4494bb4417561ae59e26aec176e766214aa61f7 Mon Sep 17 00:00:00 2001
From: Yi Wang <yiwang01@baidu.com>
Date: Mon, 4 Sep 2017 13:12:48 -0700
Subject: [PATCH 52/72] Correct optimziation part

---
 .../images/graph_construction_example.dot     |   2 ++
 .../images/graph_construction_example_all.png | Bin 58932 -> 55421 bytes
 ..._construction_example_forward_backward.png | Bin 54429 -> 47228 bytes
 ...raph_construction_example_forward_only.png | Bin 29878 -> 29192 bytes
 4 files changed, 2 insertions(+)

diff --git a/doc/design/images/graph_construction_example.dot b/doc/design/images/graph_construction_example.dot
index 86f82fe05a..bedb6de011 100644
--- a/doc/design/images/graph_construction_example.dot
+++ b/doc/design/images/graph_construction_example.dot
@@ -44,6 +44,8 @@ digraph ImageClassificationGraph {
         OPT_W [label="SGD", color=green, shape=box];
         OPT_b [label="SGD", color=green, shape=box];
 
+        W -> OPT_W [color=green];
+        b -> OPT_b [color=green];
         d_W -> OPT_W -> W [color=green];
         d_b -> OPT_b -> b [color=green];
 
diff --git a/doc/design/images/graph_construction_example_all.png b/doc/design/images/graph_construction_example_all.png
index d769d70af759873802144f0dd0ddad21976a22eb..18d8330b60e12720bb993c8cf588d64ff8db1ea9 100644
GIT binary patch
literal 55421
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

literal 58932
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
F{{SKxufPBR

diff --git a/doc/design/images/graph_construction_example_forward_backward.png b/doc/design/images/graph_construction_example_forward_backward.png
index 266f49d747f1278a606403f95fe8f9c815f3159e..61c3a02a04bc8891ab5b921a889829bcce386df8 100644
GIT binary patch
literal 47228
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

literal 54429
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
a`Y)g9=2N@ALobK{2s~Z=T-G@yGywpYgtEf`

diff --git a/doc/design/images/graph_construction_example_forward_only.png b/doc/design/images/graph_construction_example_forward_only.png
index eb1a22da72e1d9aa7abddad1b70e1da995ebda67..14805df11fc09f64d6bc17f5e969f1400d615148 100644
GIT binary patch
literal 29192
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
V<9`|827QR5uA;46qIf6p{{fk5<`n<{

literal 29878
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%0D2#P02r<A&Ql
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


From 3d9d32a1c1462780ea1a5682a27ce7da090a4b74 Mon Sep 17 00:00:00 2001
From: Yu Yang <yuyang18@baidu.com>
Date: Mon, 4 Sep 2017 16:20:27 -0700
Subject: [PATCH 53/72] Invoke check_grad many times for no_grad_set

---
 .../v2/framework/tests/gradient_checker.py    | 23 +++-------------
 .../paddle/v2/framework/tests/test_mul_op.py  | 27 +++++++++++++++----
 .../v2/framework/tests/test_rowwise_add_op.py | 16 ++++++++---
 3 files changed, 37 insertions(+), 29 deletions(-)

diff --git a/python/paddle/v2/framework/tests/gradient_checker.py b/python/paddle/v2/framework/tests/gradient_checker.py
index 82ab7ad39b..b8d7e4ea43 100644
--- a/python/paddle/v2/framework/tests/gradient_checker.py
+++ b/python/paddle/v2/framework/tests/gradient_checker.py
@@ -286,7 +286,7 @@ class GradientChecker(unittest.TestCase):
         for no_grad in no_grad_set:
             if no_grad not in in_names:
                 raise ValueError("no_grad should be in in_names")
-            if name in inputs_to_check:
+            if no_grad in inputs_to_check:
                 raise ValueError("no_grad should not be in inputs_to_check")
 
         backward_op = core.Operator.backward(forward_op, no_grad_set)
@@ -304,25 +304,8 @@ class GradientChecker(unittest.TestCase):
 
         check_names = [grad_var_name(name) for name in inputs_to_check]
         for place in places:
-            # analytic_grads = self.__get_gradient(forward_op, backward_op,
-            #   input_vars, check_names, place)
-            # In fact, the above two lines can be used to replace following
-            # codes. But most of the gradient operators need to handle the case
-            # where one of more of the gradient of the input is not needed.
-            # We change the unit test framework to explicitly test whether
-            # the operator correctly handles this through follow codes.
-            # In addtion, if all the inputs have no gradients, the NOP operator
-            # will be returned by core.Operator.backward(). The following codes
-            # do not test this case.
-            analytic_grads = []
-            for name in inputs_to_check:
-                no_grads = [name for name in no_grad_set]
-                no_grads.extend(filter(lambda x: x != name, inputs_to_check))
-                backward_op = core.Operator.backward(forward_op, set(no_grads))
-                # get analytical gradients according to different device
-                analytic_grads.extend(
-                    self.__get_gradient(forward_op, backward_op, input_vars,
-                                        [grad_var_name(name)], place))
+            analytic_grads = self.__get_gradient(forward_op, backward_op,
+                                                 input_vars, check_names, place)
             self.__assert_is_close(numeric_grads, analytic_grads, check_names,
                                    max_relative_error,
                                    "Gradient Check On %s" % str(place))
diff --git a/python/paddle/v2/framework/tests/test_mul_op.py b/python/paddle/v2/framework/tests/test_mul_op.py
index 81371b1d11..92d2b80e87 100644
--- a/python/paddle/v2/framework/tests/test_mul_op.py
+++ b/python/paddle/v2/framework/tests/test_mul_op.py
@@ -17,16 +17,33 @@ class TestMulOp(unittest.TestCase):
 
 
 class TestMulGradOp(GradientChecker):
-    def test_mul(self):
-        op = create_op("mul")
-        inputs = {
+    def setUp(self):
+        self.op = create_op("mul")
+        self.inputs = {
             'X': np.random.random((32, 84)).astype("float32"),
             'Y': np.random.random((84, 100)).astype("float32")
         }
-        self.compare_grad(op, inputs)
+
+    def test_normal(self):
         # mul op will enlarge the relative error
         self.check_grad(
-            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.5)
+            self.op, self.inputs, ["X", "Y"], "Out", max_relative_error=0.5)
+
+    def test_ignore_x(self):
+        self.check_grad(
+            self.op,
+            self.inputs, ["Y"],
+            "Out",
+            max_relative_error=0.5,
+            no_grad_set={"X"})
+
+    def test_ignore_y(self):
+        self.check_grad(
+            self.op,
+            self.inputs, ["X"],
+            "Out",
+            max_relative_error=0.5,
+            no_grad_set={"Y"})
 
 
 # TODO(dzh,qijun) : mulgrad test case need transpose feature of blas library
diff --git a/python/paddle/v2/framework/tests/test_rowwise_add_op.py b/python/paddle/v2/framework/tests/test_rowwise_add_op.py
index 45d569da29..403734e71a 100644
--- a/python/paddle/v2/framework/tests/test_rowwise_add_op.py
+++ b/python/paddle/v2/framework/tests/test_rowwise_add_op.py
@@ -17,13 +17,21 @@ class TestRowwiseAddOp(unittest.TestCase):
 
 
 class RowwiseAddGradOpTest(GradientChecker):
-    def test_rowwise_add(self):
-        op = create_op("rowwise_add")
-        inputs = {
+    def setUp(self):
+        self.op = create_op("rowwise_add")
+        self.inputs = {
             "X": np.random.uniform(0.1, 1, [5, 10]).astype("float32"),
             "b": np.random.uniform(0.1, 1, [10]).astype("float32")
         }
-        self.check_grad(op, inputs, set(["X", "b"]), "Out")
+
+    def test_normal(self):
+        self.check_grad(self.op, self.inputs, ["X", "b"], "Out")
+
+    def test_ignore_b(self):
+        self.check_grad(self.op, self.inputs, ["X"], "Out", no_grad_set={"b"})
+
+    def test_ignore_x(self):
+        self.check_grad(self.op, self.inputs, ["b"], "Out", no_grad_set={"X"})
 
 
 if __name__ == '__main__':

From beafabc73e929e3790ba93687917a002ae0f3da0 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Tue, 5 Sep 2017 10:20:43 +0800
Subject: [PATCH 54/72] follow comments

---
 doc/howto/dev/use_eigen_cn.md | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/doc/howto/dev/use_eigen_cn.md b/doc/howto/dev/use_eigen_cn.md
index 49a726959a..1367323b71 100644
--- a/doc/howto/dev/use_eigen_cn.md
+++ b/doc/howto/dev/use_eigen_cn.md
@@ -7,14 +7,14 @@
 
 Eigen Tensor模块对element-wise计算提供了强大的支持,并且书写一份代码,可以同时在CPU、GPU执行。但Eigen Tensor是一个正在开发中的模块,因此可能测试不够完备,文档较少。
 
-关于Eigen Tensor模块的详细介绍请参考[文档](https://github.com/RLovelett/eigen/blob/master/unsupported/Eigen/CXX11/src/Tensor/README.md)
+关于Eigen Tensor模块的详细介绍请参考[文档1](https://github.com/RLovelett/eigen/blob/master/unsupported/Eigen/CXX11/src/Tensor/README.md) 和[文档2](https://bitbucket.org/eigen/eigen/src/default/unsupported/Eigen/CXX11/src/Tensor/README.md)
 
 
 ### paddle::framework::Tensor
 
 Paddle Tensor定义在framework目录下,其主要接口如下:
 
-```
+```cpp
 class Tensor {
  public:
   /*! Return a pointer to mutable memory block. */
@@ -54,9 +54,9 @@ class Tensor {
 };
 ```
 
-`Placeholder`的作用的延迟分配内存,即我们可以先定义一个Tensor,然后使用Resize接口设置Tensor的大小,最后再调用mutable_data接口分配实际的内存。
+`Placeholder`的作用是延迟分配内存,即我们可以先定义一个Tensor,然后使用Resize接口设置Tensor的大小,最后再调用mutable_data接口分配实际的内存。
 
-```
+```cpp
 paddle::framework::Tensor t;
 paddle::platform::CPUPlace place;
 // set size first
@@ -65,13 +65,14 @@ t.Resize({2, 3});
 t.mutable_data(place);
 ```
 
+### paddle::framework::Tensor使用样例
 下面以AddOp为例说明Tensor的使用过程:
 
 - InferShape
 
 在运行神经网络计算图时,我们先调用每个`Operator`的`InferShape`接口,根据输入Tensor的大小来设置输出Tensor的大小,`Resize`接口会被调用。
 
-```
+```cpp
 void InferShape(const framework::InferShapeContext &ctx) const override {
   PADDLE_ENFORCE_EQ(ctx.Input<Tensor>("X")->dims(),
                     ctx.Input<Tensor>("Y")->dims(),
@@ -85,7 +86,7 @@ void InferShape(const framework::InferShapeContext &ctx) const override {
 
 `Operator`的`Run`接口最终会调用对应`OpKernel`的`Compute`接口,在这时真正的分配内存,`mutable_data`接口会被调用。
 
-```
+```cpp
 void Compute(const framework::ExecutionContext& context) const override {
   auto* input0 = context.Input<Tensor>("X");
   auto* input1 = context.Input<Tensor>("Y");
@@ -93,13 +94,13 @@ void Compute(const framework::ExecutionContext& context) const override {
 
   output->mutable_data<T>(context.GetPlace());
 
-  auto X = EigenVector<T>::Flatten(*input0);
-  auto Y = EigenVector<T>::Flatten(*input1);
-  auto Z = EigenVector<T>::Flatten(*output);
+  auto x = EigenVector<T>::Flatten(*input0);
+  auto y = EigenVector<T>::Flatten(*input1);
+  auto z = EigenVector<T>::Flatten(*output);
 
   auto place = context.GetEigenDevice<Place>();
 
-  Z.device(place) = X + Y;
+  z.device(place) = x + y;
 }
 ```
 
@@ -110,7 +111,7 @@ void Compute(const framework::ExecutionContext& context) const override {
 
 以EigenTensor为例,做一个介绍
 
-```
+```cpp
 Tensor t;
 float* p = t.mutable_data<float>(make_ddim({1, 2, 3}), platform::CPUPlace());
 for (int i = 0; i < 1 * 2 * 3; i++) {
@@ -122,7 +123,7 @@ EigenTensor<float, 3>::Type et = EigenTensor<float, 3>::From(t);
 
 From是EigenTensor模板提供的一个接口,可以实现从paddle::framework::Tensor到对EigenTensor的转换。由于Tensor的rank是模板参数,因此在转换时需要显示的指定。
 
-需要额外注意的是,EigenVector<T>::From方法是把paddle中的一维Tensor转为Eigen的一维Tensor,在这里用EigenVector来表示;而EigenVector<T>::Flatten方法是把paddle中的一个Tensor进行reshape操作,压扁成为Eigen的一维Tensor,类型仍然为EigenVector。
+在Eigen中,不同rank的Tensor是不同类型,Vector是rank为1的Tensor。需要额外注意的是,EigenVector<T>::From方法是把paddle中的一维Tensor转为Eigen的一维Tensor,在这里用EigenVector来表示;而EigenVector<T>::Flatten方法是把paddle中的一个Tensor进行reshape操作,压扁成为Eigen的一维Tensor,类型仍然为EigenVector。
 
 更多的转换方法请参考eigen_test.cc中的[单元测试](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/eigen_test.cc)。
 
@@ -132,12 +133,12 @@ From是EigenTensor模板提供的一个接口,可以实现从paddle::framework
 
 当需要完成计算时,我们需要等式左边的EigenTensor调用device接口。在这里需要注意的是,这里的EigenTensor之间的运算只是改变了原有Tensor中的数据,而不会改变原有Tensor的shape信息。
 
-```
-auto X = EigenVector<T>::Flatten(*input0);
-auto Y = EigenVector<T>::Flatten(*input1);
-auto Z = EigenVector<T>::Flatten(*output);
+```cpp
+auto x = EigenVector<T>::Flatten(*input0);
+auto y = EigenVector<T>::Flatten(*input1);
+auto z = EigenVector<T>::Flatten(*output);
 auto place = context.GetEigenDevice<Place>();
-Z.device(place) = X + Y;
+z.device(place) = x + y;
 ```
 
 在这段代码中,input0/input1/output可以是任意维度的Tensor。我们调用了EigenVector的Flatten接口,把任意维度的Tensor转为了一维的EigenVector。而在计算结束之后,input0/input1/output的原有shape信息不变。如果想改变原有Tensor的shape信息,可以调用Resize接口进行改变。

From ab55d7933bd7efbdddebbcee237323505d80244a Mon Sep 17 00:00:00 2001
From: dangqingqing <dangqingqing@baidu.com>
Date: Tue, 5 Sep 2017 10:36:46 +0800
Subject: [PATCH 55/72] revert scatter_op and other mirror changes.

---
 doc/howto/dev/new_op_cn.md                    | 48 ++++++++++++++-----
 paddle/operators/mul_op.h                     |  2 +-
 paddle/operators/scatter_op.cc                |  4 +-
 paddle/operators/scatter_op.h                 | 10 ++--
 .../paddle/v2/framework/tests/test_mul_op.py  |  3 ++
 .../v2/framework/tests/test_rowwise_add_op.py |  2 +-
 6 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index ec79b7f42b..5c523bf046 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -280,28 +280,50 @@ class TestMulOp(unittest.TestCase):
 
 反向Op单测继承自`GradientChecker`,而`GradientChecker`集成自`unittest.TestCase`,所以反向单测函数需要`test_`开头。
 
- ```
- class MulGradOpTest(GradientChecker):
-    def test_mul(self):
-        op = create_op("mul")
-        inputs = {
+```
+class TestMulGradOp(GradientChecker):
+    def setUp(self):
+        self.op = create_op("mul")
+        self.inputs = {
             'X': np.random.random((32, 84)).astype("float32"),
             'Y': np.random.random((84, 100)).astype("float32")
         }
-        self.compare_grad(op, inputs)      
+
+    def test_cpu_gpu_compare(self):
+        self.compare_grad(self.op, self.inputs)
+
+    def test_normal(self):
         # mul op will enlarge the relative error
         self.check_grad(
-            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.5)
- ```
+            self.op, self.inputs, ["X", "Y"], "Out", max_relative_error=0.5)
+
+    def test_ignore_x(self):
+        self.check_grad(
+            self.op,
+            self.inputs, ["Y"],
+            "Out",
+            max_relative_error=0.5,
+            no_grad_set={"X"})
+
+    def test_ignore_y(self):
+        self.check_grad(
+            self.op,
+            self.inputs, ["X"],
+            "Out",
+            max_relative_error=0.5,
+            no_grad_set={"Y"})
+```
+
+下面解释一些关键的地方:
 
    - 调用`create_op("mul")`创建反向Op对应的前向Op。
-   - 定义输入`inputs`。
    - 调用`compare_grad`函数对比CPU、GPU计算结果。
-   - 调用`check_grad`检查梯度稳定性,这里采用数值法检测梯度正确性。
-      - 第一个参数`op` : 前向op。
-      - 第二个参数`inputs` : 输入词典,词典的Key和`ProtoMaker`定义保持一致。
-      - 第三个参数`set(["X", "Y"])` : 指定对输入变量`X`、`Y`做梯度检测。
+   - `test_normal`中调用`check_grad`检查梯度稳定性,这里采用数值法检测梯度正确性。
+      - 第一个参数`self.op` : 前向Op。
+      - 第二个参数`self.inputs` : 输入词典,词典的Key和`ProtoMaker`定义保持一致。
+      - 第三个参数`["X", "Y"]` : 指定对输入变量`X`、`Y`做梯度检测。
       - 第四个参数`"Out"` : 指定前向网络最终的输出目标变量`Out`
+   - `test_ignore_x`和`test_ignore_y`分支测试只需要计算一个输入梯度的情况。
 
 
 ### 编译和执行 
diff --git a/paddle/operators/mul_op.h b/paddle/operators/mul_op.h
index 66ed2f81c7..05a79e13b3 100644
--- a/paddle/operators/mul_op.h
+++ b/paddle/operators/mul_op.h
@@ -54,8 +54,8 @@ class MulGradKernel : public framework::OpKernel {
     auto* device_context =
         const_cast<platform::DeviceContext*>(ctx.device_context_);
     if (dx) {
-      // dx = dout * y'. dx: M x K, dout : M x N, y : K x N
       dx->mutable_data<T>(ctx.GetPlace());
+      // dx = dout * y'. dx: M x K, dout : M x N, y : K x N
       math::matmul<Place, T>(*dout, false, *y, true, 1, dx, 0, device_context);
     }
     if (dy) {
diff --git a/paddle/operators/scatter_op.cc b/paddle/operators/scatter_op.cc
index 9b5068f07c..35c185ad80 100644
--- a/paddle/operators/scatter_op.cc
+++ b/paddle/operators/scatter_op.cc
@@ -50,8 +50,8 @@ class ScatterGradOp : public framework::OperatorWithKernel {
     auto *dRef = ctx.Output<Tensor>(framework::GradVarName("Ref"));
     auto *Ref = ctx.Input<Tensor>("Ref");
 
-    if (dRef) dRef->Resize(Ref->dims());
-    if (dUpdates) dUpdates->Resize(Updates->dims());
+    dRef->Resize(Ref->dims());
+    dUpdates->Resize(Updates->dims());
   }
 };
 
diff --git a/paddle/operators/scatter_op.h b/paddle/operators/scatter_op.h
index 7551480211..e9595638a8 100644
--- a/paddle/operators/scatter_op.h
+++ b/paddle/operators/scatter_op.h
@@ -49,12 +49,10 @@ class ScatterGradientOpKernel : public framework::OpKernel {
     auto *dOut = ctx.Input<Tensor>(framework::GradVarName("Out"));
 
     // In place gradient: dRef = dO
-    if (dRef) dRef->ShareDataWith<T>(*dOut);
-    if (dUpdates) {
-      dUpdates->mutable_data<T>(ctx.GetPlace());
-      // Gradient by Gather: dUpdates += dO[Index]
-      Gather<T>(ctx.GetPlace(), dOut, Index, dUpdates);
-    }
+    dRef->ShareDataWith<T>(*dOut);
+    dUpdates->mutable_data<T>(ctx.GetPlace());
+    // Gradient by Gather: dUpdates += dO[Index]
+    Gather<T>(ctx.GetPlace(), dOut, Index, dUpdates);
   }
 };
 
diff --git a/python/paddle/v2/framework/tests/test_mul_op.py b/python/paddle/v2/framework/tests/test_mul_op.py
index 92d2b80e87..b58e4266d1 100644
--- a/python/paddle/v2/framework/tests/test_mul_op.py
+++ b/python/paddle/v2/framework/tests/test_mul_op.py
@@ -24,6 +24,9 @@ class TestMulGradOp(GradientChecker):
             'Y': np.random.random((84, 100)).astype("float32")
         }
 
+    def test_cpu_gpu_compare(self):
+        self.compare_grad(self.op, self.inputs)
+
     def test_normal(self):
         # mul op will enlarge the relative error
         self.check_grad(
diff --git a/python/paddle/v2/framework/tests/test_rowwise_add_op.py b/python/paddle/v2/framework/tests/test_rowwise_add_op.py
index 403734e71a..2ddb85e2e7 100644
--- a/python/paddle/v2/framework/tests/test_rowwise_add_op.py
+++ b/python/paddle/v2/framework/tests/test_rowwise_add_op.py
@@ -16,7 +16,7 @@ class TestRowwiseAddOp(unittest.TestCase):
         self.outputs = {'Out': np.add(self.inputs['X'], self.inputs['b'])}
 
 
-class RowwiseAddGradOpTest(GradientChecker):
+class TestRowwiseAddGradOp(GradientChecker):
     def setUp(self):
         self.op = create_op("rowwise_add")
         self.inputs = {

From efd40b66cc4bb898fe152337aeda9f65ced33767 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Tue, 5 Sep 2017 14:17:13 +0800
Subject: [PATCH 56/72] update the doc for how to write the operators.

---
 doc/howto/dev/new_op_cn.md | 141 +++++++++++++++++--------------------
 1 file changed, 64 insertions(+), 77 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index 3e71a0a592..6bd54137ba 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -23,19 +23,20 @@
 - `framework::OperatorWithKernel`:继承自OperatorBase,Op有计算函数,称作有Kernel。
 - `class OpProtoAndCheckerMaker`:描述该Op的输入、输出、属性、注释,主要用于Python API接口生成
 
-依据是否包含kernel,将Op分为两种:包含Kernel的Op和不包含kernel的Op,前者Op的定义继承自`OperatorBase`,后者继承自`OperatorWithKernel`。本教程主要介绍带Kernel的Op如何写,简单总结Op需要包含的内容如下:
-
-  
- 内容            | 定义位置         
---------------  | :----------------------  
-OpProtoMake定义  | `.cc`文件,Backward Op不需要定义OpProtoMake
-Op定义           | `.cc`文件 
-Kernel实现       | CPU、GPU共享Kernel在`.h`文件,否则,CPU可以在`.cc`文件,GPU可在`.cu`文件。 
-注册Op           | Op注册在`.cc`文件;Kernel注册CPU在`.cc`文件,GPU在`.cu`文件
-     
-     
-下面以矩阵乘操作,即[MulOp](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc)为例来介绍如何写带Kernel的Operator。
+依据是否包含kernel,可以将Op分为两种:包含Kernel的Op和不包含kernel的Op,前者Op的定义继承自`OperatorBase`,后者继承自`OperatorWithKernel`。本教程主要介绍带Kernel的Op如何写,简单总结Op需要包含的内容如下:
+
+
+ 内容            | 定义位置
+--------------  | :----------------------
+OpProtoMake定义  | `*_op.cc`文件,Backward Op不需要定义OpProtoMake
+Op定义           | `*_op.cc`文件
+Kernel实现       | CPU、GPU共享Kernel在`*_op.h`文件,否则,CPU可以在`*_op.cc`文件,GPU可在`*_op.cu`文件。
+注册Op           | Op注册在`*_op.cc`文件;Kernel注册CPU在`*_op.cc`文件,GPU在`*_op.cu`文件
 
+实现新的op都添加至目录[paddle/operators](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/operators)下,文件命名以`*_op.h`(如有) 、 `*_op.cc` 、`*_op.cu`(如有)结尾。
+
+
+下面以矩阵乘操作,即[MulOp](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc)为例来介绍如何写带Kernel的Operator。
 
 ## 实现C++类
 
@@ -43,8 +44,8 @@ Kernel实现       | CPU、GPU共享Kernel在`.h`文件,否则,CPU可以在`
 ### 1. 定义ProtoMaker类
 
 矩阵乘的公式:$Out = X * Y$, 可见该计算由两个输入,一个输出组成。首先定义`ProtoMaker`来描述该Op的输入、输出及注释:
-    
-```
+
+```cpp
 class MulOpMaker : public framework::OpProtoAndCheckerMaker {
  public:
   MulOpMaker(framework::OpProto *proto, framework::OpAttrChecker *op_checker)
@@ -59,20 +60,20 @@ The equation is: Out = X * Y
   }
 };
 ```
-   
-[`MulOpMaker`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc#L43)继承自`framework::OpProtoAndCheckerMaker`,构造函数包括2个:
+
+[`MulOpMaker`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc#L43)继承自`framework::OpProtoAndCheckerMaker`,构造函数包括2个参数:
 
    - `framework::OpProto` : 前者存储Op的输入输出和参数属性,将用于Python API接口的生成。
    - `framework::OpAttrChecker` :后者用于检查参数属性的合法性。
-   
+
 构造函数里通过`AddInput`添加输入参数,通过`AddOutput`添加输出参数,通过`AddComment`添加该Op的注释,这些函数会将对应内容添加到`OpProto`中。
 
-在`MulOp`中添加两个输入`X`和`Y`,添加了一个输出`Out`,并解释了各自含义,该命名尽可能的规范。
+在`MulOp`中添加两个输入`X`和`Y`,添加了一个输出`Out`,并解释了各自含义,命名请遵守命名规范。
+
 
-   
 再举个[`ScaleOp`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/scale_op.cc#L37)的例子:
-   
-```
+
+```cpp
 template <typename AttrType>
 class ScaleOpMaker : public framework::OpProtoAndCheckerMaker {
  public:
@@ -87,17 +88,17 @@ The equation is: Out = scale*X
   }
 };
 ```
- 
- 在这个例子里,两处不同:
- 
+
+ 这个例子有两处不同:
+
   - `AddInput("X","...").NotInGradient()` : 表示`X`这个输入不参与`ScaleOp`对应的梯度Op计算之中。
   - `AddAttr<AttrType>("scale", "...").SetDefault(1.0);` : 增加`scale`系数,作为参数属性,并且设置默认值为1.0。
-   
+
 
 ### 2. 定义Operator类
 
 
-```c++
+```cpp
 class MulOp : public framework::OperatorWithKernel {
  public:
   using framework::OperatorWithKernel::OperatorWithKernel;
@@ -121,20 +122,20 @@ class MulOp : public framework::OperatorWithKernel {
 ```
 
 [`MulOp`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc#L22)继承自`OperatorWithKernel`。`public`成员:
-	 
-```c++
+
+```cpp
 using framework::OperatorWithKernel::OperatorWithKernel;
 ```
 
 这句表示使用基类`OperatorWithKernel`的构造函数,也可写成:
-   
-```c++
+
+```cpp
 MulOp(const std::string &type, const framework::VariableNameMap &inputs,
       const framework::VariableNameMap &outputs,
       const framework::AttributeMap &attrs)
   : OperatorWithKernel(type, inputs, outputs, attrs) {}
-```	
-	
+```
+
 还需要重写`InferShape`接口。`InferShape`为const函数,不能修改Op的成员变量,参数为`const framework::InferShapeContext &ctx`,通过该参数可获取到输入输出以及属性。它的功能是:
 
   - 1). 做检查, 尽早报错:检查输入数据维度、类型等是否合法。
@@ -144,7 +145,7 @@ MulOp(const std::string &type, const framework::VariableNameMap &inputs,
 
 ### 3. 定义OpKernel类
 
-```C++
+```cpp
 template <typename Place, typename T>
 class MulKernel : public framework::OpKernel {
  public:
@@ -163,34 +164,34 @@ class MulKernel : public framework::OpKernel {
 `MulKernel`继承自`framework::OpKernel`,带有模板参数:
 
   - `typename  Place`: 表示设备类型,不同设备(CPU、GPU)共享同一个Kernel时,需加该模板参数,不共享则不加,一个不共享的例子是[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。
-  
+
  - `typename T` : 表示数据类型,如`float`, `double`等。
-   
+
 `MulKernel`需要重写`Compute`接口,该接口参数为`const framework::ExecutionContext& context`, `ExecutionContext`相比`InferShapeContext`增加了设备类型,同样可获取到输入输出和属性参数,`Compute`函数里写具体实现时。
-   
-注意,不同设备(CPU、GPU)共享一个Op定义,是否则共享同一个`OpKernel`,取决于`Compute`调用的函数是否支持不同设备。`MulOp`的CPU、GPU实现共享同一个`Kernel`,`OpKernel`不共享的例子可以参考[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。 
-   
+
+注意,不同设备(CPU、GPU)共享一个Op定义,是否则共享同一个`OpKernel`,取决于`Compute`调用的函数是否支持不同设备。`MulOp`的CPU、GPU实现共享同一个`Kernel`,`OpKernel`不共享的例子可以参考[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。
+
 到此前向Op实现完成,需要在`.cc`文件中注册该op和kernel。反向Op类的定义和Kernel定义与前向Op类似,这里不再重复。但注意,反向Op没有`ProtoMaker`。
-   
+
 ### 4. 注册Operator
 
 在`.cc`文件中注册前向、反向Op类,注册CPU Kernel。
 
-```c++
+```cpp
 namespace ops = paddle::operators;
 REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
 REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
 REGISTER_OP_CPU_KERNEL(mul_grad,
               ops::MulGradKernel<paddle::platform::CPUPlace, float>);
 ```
-    
+
   - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,注册`ops::MulOpGrad`,类型名为`mul_grad`,
   - `REGISTER_OP_WITHOUT_GRADIENT` : 用于注册没有反向的Op。
   - `REGISTER_OP_CPU_KERNEL` :注册`ops::MulKernel`类,并特化模板参数为`paddle::platform::CPUPlace`和`float`类型,同理,注册`ops::MulKernel`类。
 
 在 `.cu`文件中注册GPU Kernel。
-   
-```c++
+
+```cpp
 namespace ops = paddle::operators;
 REGISTER_OP_GPU_KERNEL(mul, ops::MulKernel<paddle::platform::GPUPlace, float>);
 REGISTER_OP_GPU_KERNEL(mul_grad,
@@ -199,56 +200,42 @@ REGISTER_OP_GPU_KERNEL(mul_grad,
 
 ### 5. 编译
 
-在[paddle/operators/CMakeLists.txt](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/CMakeLists.txt)文件中添加编译。
-   
-```
-op_library(mul_op SRCS mul_op.cc mul_op.cu DEPS math_function)
-```
-   
-下面命令可以编译:
-   
+无需修改[paddle/operators/CMakeLists.txt](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会被自动加入编译。
+
+直接执行下面命令可进行编译:
+
 ```
 make mul_op
 ```
 
 ## 绑定Python
 
-- 绑定Python 
- 
-    在 [`paddle/pybind/pybind.cc 
+- 绑定Python
+
+    在 [`paddle/pybind/pybind.cc
 `](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/pybind.cc)文件中添加该类:
 
     ```
     USE_OP(mul);
     ```
     如果只实现了CPU版本,则使用`USE_CPU_ONLY_OP`:
-    
+
     ```
     USE_CPU_ONLY_OP(gather);
     ```
-    
+
     如果OP不带Kernel,则使用`USE_NO_KENREL_OP`:
-    
+
     ```
     USE_NO_KENREL_OP(recurrent);
     ```
-    
+
     使用`USE_OP`告知编译器需要链接该Op的目标文件,具体解释参考[代码注释](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/op_registry.h#L81)。
-    
-    
+
+
  - 生成库
 
-   在 [`paddle/pybind/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/CMakeLists.txt)文件添加类到`DEPS`中,使得该Op可以链接到生成的lib库中。
-   
-   ```
-   if(WITH_PYTHON)
-     cc_library(paddle_pybind SHARED
-     SRCS pybind.cc
-     DEPS pybind python backward
-     mul_op
-     minus_op)
-   endif(WITH_PYTHON)
-   ```
+   无需修改 [`paddle/pybind/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会被自动被添加链接至生成的lib库中。
 
 ## 实现单元测试
 
@@ -258,7 +245,7 @@ make mul_op
 
 前向Op单测继承自`unittest.TestCase`,并定义元类`__metaclass__ = OpTestMeta`,具体单测流程在`OpTestMeta`里完成。需在`setUp`函数定义输入输出和属性参数,以及Python对比的输出值。
 
-```
+```python
 import unittest
 import numpy as np
 from gradient_checker import GradientChecker, create_op
@@ -276,17 +263,17 @@ class TestMulOp(unittest.TestCase):
         self.outputs = {'Out': np.dot(self.inputs['X'], self.inputs['Y'])}
 ```
    首先需要`import`必要的包,下面详细解释其他值:
-   
+
    - `self.type = "mul" ` : 定义类型,和注册的类型一致。
    - `self.inputs` : 定义输入,类型为Numpy.array,并初始化。
    - `self.outputs` : 定义输出,并得到Python结算结果。
 
- 
+
 ### 反向Operator单测
 
 反向Op单测继承自`GradientChecker`,而`GradientChecker`集成自`unittest.TestCase`,所以反向单测函数需要`test_`开头。
 
- ```
+ ```python
  class MulGradOpTest(GradientChecker):
     def test_mul(self):
         op = create_op("mul")
@@ -294,7 +281,7 @@ class TestMulOp(unittest.TestCase):
             'X': np.random.random((32, 84)).astype("float32"),
             'Y': np.random.random((84, 100)).astype("float32")
         }
-        self.compare_grad(op, inputs)      
+        self.compare_grad(op, inputs)
         # mul op will enlarge the relative error
         self.check_grad(
             op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.5)
@@ -310,7 +297,7 @@ class TestMulOp(unittest.TestCase):
       - 第四个参数`"Out"` : 指定前向网络最终的输出目标变量`Out`
 
 
-### 编译和执行 
+### 编译和执行
 
 单测完成之后,在[`python/paddle/v2/framework/tests/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/CMakeLists.txt)里添加编译:
 

From cdae0c754ec2f218ad06589fe669ebb00fb52e07 Mon Sep 17 00:00:00 2001
From: chengduoZH <zhaochengduo@163.com>
Date: Tue, 5 Sep 2017 15:51:47 +0800
Subject: [PATCH 57/72] fix Conv3d, DeConv3d (bias shape)

---
 paddle/gserver/layers/Conv3DLayer.cpp   | 23 +++++++++++++++++------
 paddle/gserver/layers/DeConv3DLayer.cpp | 22 ++++++++++++++++------
 2 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/paddle/gserver/layers/Conv3DLayer.cpp b/paddle/gserver/layers/Conv3DLayer.cpp
index 7cc9937cce..3887aa58b2 100644
--- a/paddle/gserver/layers/Conv3DLayer.cpp
+++ b/paddle/gserver/layers/Conv3DLayer.cpp
@@ -42,10 +42,10 @@ bool Conv3DLayer::init(const LayerMap &layerMap,
     if (sharedBiases_) {
       CHECK_EQ((size_t)numFilters_, biasParameter_->getSize());
       biases_ =
-          std::unique_ptr<Weight>(new Weight(1, numFilters_, biasParameter_));
+          std::unique_ptr<Weight>(new Weight(numFilters_, 1, biasParameter_));
     } else {
       biases_ =
-          std::unique_ptr<Weight>(new Weight(1, getSize(), biasParameter_));
+          std::unique_ptr<Weight>(new Weight(getSize(), 1, biasParameter_));
     }
   }
   return true;
@@ -224,20 +224,31 @@ void Conv3DLayer::bpropData(int i) {
 }
 
 void Conv3DLayer::bpropBiases() {
+  MatrixPtr biases = Matrix::create(biases_->getWGrad()->getData(),
+                                    1,
+                                    biases_->getWGrad()->getElementCnt(),
+                                    false,
+                                    useGpu_);
   MatrixPtr outGradMat = getOutputGrad();
+
   if (this->sharedBiases_) {
-    biases_->getWGrad()->collectSharedBias(*outGradMat, 1.0f);
+    biases->collectSharedBias(*outGradMat, 1.0f);
   } else {
-    biases_->getWGrad()->collectBias(*outGradMat, 1.0f);
+    biases->collectBias(*outGradMat, 1.0f);
   }
 }
 
 void Conv3DLayer::addBias() {
   MatrixPtr outMat = getOutputValue();
+  MatrixPtr bias = Matrix::create(biases_->getW()->getData(),
+                                  1,
+                                  biases_->getW()->getElementCnt(),
+                                  false,
+                                  useGpu_);
   if (this->sharedBiases_) {
-    outMat->addSharedBias(*(biases_->getW()), 1.0f);
+    outMat->addSharedBias(*(bias), 1.0f);
   } else {
-    outMat->addBias(*(biases_->getW()), 1.0f);
+    outMat->addBias(*(bias), 1.0f);
   }
 }
 
diff --git a/paddle/gserver/layers/DeConv3DLayer.cpp b/paddle/gserver/layers/DeConv3DLayer.cpp
index 7d5c772c89..2838980a97 100644
--- a/paddle/gserver/layers/DeConv3DLayer.cpp
+++ b/paddle/gserver/layers/DeConv3DLayer.cpp
@@ -42,10 +42,10 @@ bool DeConv3DLayer::init(const LayerMap &layerMap,
     if (sharedBiases_) {
       CHECK_EQ((size_t)numFilters_, biasParameter_->getSize());
       biases_ =
-          std::unique_ptr<Weight>(new Weight(1, numFilters_, biasParameter_));
+          std::unique_ptr<Weight>(new Weight(numFilters_, 1, biasParameter_));
     } else {
       biases_ =
-          std::unique_ptr<Weight>(new Weight(1, getSize(), biasParameter_));
+          std::unique_ptr<Weight>(new Weight(getSize(), 1, biasParameter_));
     }
   }
   return true;
@@ -191,21 +191,31 @@ void DeConv3DLayer::bpropWeights(int i) {}
 void DeConv3DLayer::bpropData(int i) {}
 
 void DeConv3DLayer::bpropBiases() {
+  MatrixPtr biases = Matrix::create(biases_->getWGrad()->getData(),
+                                    1,
+                                    biases_->getWGrad()->getElementCnt(),
+                                    false,
+                                    useGpu_);
   const MatrixPtr &outGradMat = getOutputGrad();
 
   if (this->sharedBiases_) {
-    biases_->getWGrad()->collectSharedBias(*outGradMat, 1.0f);
+    biases->collectSharedBias(*outGradMat, 1.0f);
   } else {
-    biases_->getWGrad()->collectBias(*outGradMat, 1.0f);
+    biases->collectBias(*outGradMat, 1.0f);
   }
 }
 
 void DeConv3DLayer::addBias() {
   MatrixPtr outMat = getOutputValue();
+  MatrixPtr bias = Matrix::create(biases_->getW()->getData(),
+                                  1,
+                                  biases_->getW()->getElementCnt(),
+                                  false,
+                                  useGpu_);
   if (this->sharedBiases_) {
-    outMat->addSharedBias(*(biases_->getW()), 1.0f);
+    outMat->addSharedBias(*(bias), 1.0f);
   } else {
-    outMat->addBias(*(biases_->getW()), 1.0f);
+    outMat->addBias(*(bias), 1.0f);
   }
 }
 

From b3ff125d5598da6e362f360220eef816cf0d7f42 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Tue, 5 Sep 2017 16:29:57 +0800
Subject: [PATCH 58/72] follow comments.

---
 doc/howto/dev/new_op_cn.md | 42 +++++++++++++++++++++++---------------
 1 file changed, 25 insertions(+), 17 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index 6bd54137ba..85c222163c 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -28,16 +28,18 @@
 
  内容            | 定义位置
 --------------  | :----------------------
-OpProtoMake定义  | `*_op.cc`文件,Backward Op不需要定义OpProtoMake
-Op定义           | `*_op.cc`文件
-Kernel实现       | CPU、GPU共享Kernel在`*_op.h`文件,否则,CPU可以在`*_op.cc`文件,GPU可在`*_op.cu`文件。
-注册Op           | Op注册在`*_op.cc`文件;Kernel注册CPU在`*_op.cc`文件,GPU在`*_op.cu`文件
+OpProtoMake定义  | `.cc`文件,Backward Op不需要定义OpProtoMake
+Op定义           | `.cc`文件
+Kernel实现       | CPU、GPU共享Kernel在`.h`文件,否则,CPU可以在`.cc`文件,GPU可在`.cu`文件。
+注册Op           | Op注册在`.cc`文件;Kernel注册CPU在`.cc`文件,GPU在`.cu`文件
+
 
 实现新的op都添加至目录[paddle/operators](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/operators)下,文件命名以`*_op.h`(如有) 、 `*_op.cc` 、`*_op.cu`(如有)结尾。
 
 
 下面以矩阵乘操作,即[MulOp](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc)为例来介绍如何写带Kernel的Operator。
 
+
 ## 实现C++类
 
 
@@ -200,13 +202,18 @@ REGISTER_OP_GPU_KERNEL(mul_grad,
 
 ### 5. 编译
 
-无需修改[paddle/operators/CMakeLists.txt](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会被自动加入编译。
+- 简单**无特殊依赖**的OP无需修改CMakeList.txt文件。[paddle/operators/CMakeLists.txt](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/CMakeLists.txt) 会自动将 `paddle/operators` 目录下新增的 `*_op.cc` 文件加入编译。
+- 较为复杂、**有额外依赖** 的operator仍需要修改[paddle/operators/CMakeLists.txt](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/CMakeLists.txt)。如,`mul_op` 依赖 `math_function`,需要在`CMakeLists.txt`中添加如下内容:
 
-直接执行下面命令可进行编译:
+    ```
+    op_library(mul_op SRCS mul_op.cc mul_op.cu DEPS math_function)		 +
+    ```
 
-```
-make mul_op
-```
+- 运行下面命令可以进行编译:
+
+    ```
+    make mul_op
+    ```
 
 ## 绑定Python
 
@@ -235,13 +242,13 @@ make mul_op
 
  - 生成库
 
-   无需修改 [`paddle/pybind/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会被自动被添加链接至生成的lib库中。
+   无需修改 [`paddle/pybind/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会自动被添加链接到生成的lib库中。
 
 ## 实现单元测试
 
 单测包括对比前向Op不同设备(CPU、GPU)的实现、对比反向OP不同设备(CPU、GPU)的实现、反向Op的梯度测试。下面介绍介绍[`MulOp`的单测](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/test_mul_op.py)。
 
-### 前向Operator单测
+### 前向Operator单元测试
 
 前向Op单测继承自`unittest.TestCase`,并定义元类`__metaclass__ = OpTestMeta`,具体单测流程在`OpTestMeta`里完成。需在`setUp`函数定义输入输出和属性参数,以及Python对比的输出值。
 
@@ -269,7 +276,7 @@ class TestMulOp(unittest.TestCase):
    - `self.outputs` : 定义输出,并得到Python结算结果。
 
 
-### 反向Operator单测
+### 反向Operator单元测试
 
 反向Op单测继承自`GradientChecker`,而`GradientChecker`集成自`unittest.TestCase`,所以反向单测函数需要`test_`开头。
 
@@ -297,21 +304,22 @@ class TestMulOp(unittest.TestCase):
       - 第四个参数`"Out"` : 指定前向网络最终的输出目标变量`Out`
 
 
-### 编译和执行
+### 编译和执行单元测试
 
-单测完成之后,在[`python/paddle/v2/framework/tests/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/CMakeLists.txt)里添加编译:
+单测完成之后,在[`python/paddle/v2/framework/tests/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/CMakeLists.txt)里添加以下内容将单测加入工程中:
 
 ```
 py_test(test_mul_op SRCS test_mul_op.py)
 ```
 
-编译时需要打开`WITH_TESTING`, 即 `cmake paddle_dir -DWITH_TESTING=ON`,编译成功之后执行单测命令为:
+请注意,**不同于Op的编译测试,运行单元测试测时需要编译整个工程**,并且编译时需要打开`WITH_TESTING`, 即`cmake paddle_dir -DWITH_TESTING=ON`。编译成功后,执行下面的命令来运行单测:
 
-```
+```bash
 make test ARGS="-R test_mul_op -V"
 ```
+
 或者:
 
-```
+```bash
 ctest -R test_mul_op
 ```

From 020e45f715b1a1cea5dcbee10dacb055b3889523 Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Tue, 5 Sep 2017 16:54:12 +0800
Subject: [PATCH 59/72] follow comments to revert add_two_op to add_op

---
 paddle/framework/CMakeLists.txt                           | 2 +-
 paddle/framework/grad_op_builder_test.cc                  | 4 ++--
 paddle/operators/{add_two_op.cc => add_op.cc}             | 7 +++----
 paddle/operators/{add_two_op.cu => add_op.cu}             | 5 ++---
 paddle/operators/{add_two_op.h => add_op.h}               | 0
 paddle/pybind/pybind.cc                                   | 2 +-
 python/paddle/v2/framework/tests/test_add_two_op.py       | 2 +-
 python/paddle/v2/framework/tests/test_gradient_checker.py | 2 +-
 python/paddle/v2/framework/tests/test_net.py              | 4 ++--
 python/paddle/v2/framework/tests/test_operator.py         | 4 ++--
 python/paddle/v2/framework/tests/test_recurrent_op.py     | 2 +-
 11 files changed, 16 insertions(+), 18 deletions(-)
 rename paddle/operators/{add_two_op.cc => add_op.cc} (88%)
 rename paddle/operators/{add_two_op.cu => add_op.cu} (82%)
 rename paddle/operators/{add_two_op.h => add_op.h} (100%)

diff --git a/paddle/framework/CMakeLists.txt b/paddle/framework/CMakeLists.txt
index e138517b6b..c0838d9b75 100644
--- a/paddle/framework/CMakeLists.txt
+++ b/paddle/framework/CMakeLists.txt
@@ -25,7 +25,7 @@ cc_test(operator_test SRCS operator_test.cc DEPS operator op_registry)
 cc_library(grad_op_builder SRCS grad_op_builder.cc DEPS operator)
 cc_library(op_registry SRCS op_registry.cc DEPS grad_op_builder)
 cc_test(op_registry_test SRCS op_registry_test.cc DEPS op_registry)
-cc_test(grad_op_builder_test SRCS grad_op_builder_test.cc DEPS grad_op_builder op_registry add_two_op)
+cc_test(grad_op_builder_test SRCS grad_op_builder_test.cc DEPS grad_op_builder op_registry add_op)
 
 py_proto_compile(framework_py_proto SRCS framework.proto)
 # Generate an empty __init__.py to make framework_py_proto as a valid python module.
diff --git a/paddle/framework/grad_op_builder_test.cc b/paddle/framework/grad_op_builder_test.cc
index 902c2655e9..9e3ca563c6 100644
--- a/paddle/framework/grad_op_builder_test.cc
+++ b/paddle/framework/grad_op_builder_test.cc
@@ -3,7 +3,7 @@
 #include "paddle/framework/op_registry.h"
 #include "paddle/framework/operator.h"
 
-USE_OP(add_two);
+USE_OP(add);
 
 namespace paddle {
 namespace framework {
@@ -41,7 +41,7 @@ namespace f = paddle::framework;
 
 TEST(GradOpBuilder, AddTwo) {
   std::shared_ptr<f::OperatorBase> add_op(f::OpRegistry::CreateOp(
-      "add_two", {{"X", {"x"}}, {"Y", {"y"}}}, {{"Out", {"out"}}}, {}));
+      "add", {{"X", {"x"}}, {"Y", {"y"}}}, {{"Out", {"out"}}}, {}));
   std::shared_ptr<f::OperatorBase> grad_add_op =
       f::OpRegistry::CreateGradOp(*add_op);
   EXPECT_EQ(grad_add_op->Inputs().size(), 4UL);
diff --git a/paddle/operators/add_two_op.cc b/paddle/operators/add_op.cc
similarity index 88%
rename from paddle/operators/add_two_op.cc
rename to paddle/operators/add_op.cc
index bc99e306e0..8dbd47cf0d 100644
--- a/paddle/operators/add_two_op.cc
+++ b/paddle/operators/add_op.cc
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License. */
 
-#include "paddle/operators/add_two_op.h"
+#include "paddle/operators/add_op.h"
 
 namespace paddle {
 namespace operators {
@@ -57,7 +57,6 @@ class AddOpGrad : public framework::OperatorWithKernel {
 }  // namespace paddle
 
 namespace ops = paddle::operators;
-REGISTER_OP(add_two, ops::AddOp, ops::AddOpMaker, add_two_grad, ops::AddOpGrad);
+REGISTER_OP(add, ops::AddOp, ops::AddOpMaker, add_grad, ops::AddOpGrad);
 
-REGISTER_OP_CPU_KERNEL(add_two,
-                       ops::AddKernel<paddle::platform::CPUPlace, float>);
+REGISTER_OP_CPU_KERNEL(add, ops::AddKernel<paddle::platform::CPUPlace, float>);
diff --git a/paddle/operators/add_two_op.cu b/paddle/operators/add_op.cu
similarity index 82%
rename from paddle/operators/add_two_op.cu
rename to paddle/operators/add_op.cu
index acc03b2c8b..fdf2c66c7c 100644
--- a/paddle/operators/add_two_op.cu
+++ b/paddle/operators/add_op.cu
@@ -14,8 +14,7 @@
 
 #define EIGEN_USE_GPU
 #include "paddle/framework/op_registry.h"
-#include "paddle/operators/add_two_op.h"
+#include "paddle/operators/add_op.h"
 
 namespace ops = paddle::operators;
-REGISTER_OP_GPU_KERNEL(add_two,
-                       ops::AddKernel<paddle::platform::GPUPlace, float>);
+REGISTER_OP_GPU_KERNEL(add, ops::AddKernel<paddle::platform::GPUPlace, float>);
diff --git a/paddle/operators/add_two_op.h b/paddle/operators/add_op.h
similarity index 100%
rename from paddle/operators/add_two_op.h
rename to paddle/operators/add_op.h
diff --git a/paddle/pybind/pybind.cc b/paddle/pybind/pybind.cc
index 6896422617..dba3d8f285 100644
--- a/paddle/pybind/pybind.cc
+++ b/paddle/pybind/pybind.cc
@@ -30,7 +30,7 @@ limitations under the License. */
 
 namespace py = pybind11;
 
-USE_OP(add_two);
+USE_OP(add);
 USE_OP(onehot_cross_entropy);
 USE_OP(sgd);
 USE_OP(mul);
diff --git a/python/paddle/v2/framework/tests/test_add_two_op.py b/python/paddle/v2/framework/tests/test_add_two_op.py
index 0def484edd..a578e74eca 100644
--- a/python/paddle/v2/framework/tests/test_add_two_op.py
+++ b/python/paddle/v2/framework/tests/test_add_two_op.py
@@ -11,7 +11,7 @@ class TestAddOp(unittest.TestCase):
     __metaclass__ = OpTestMeta
 
     def setUp(self):
-        self.type = "add_two"
+        self.type = "add"
         self.inputs = {
             'X': numpy.random.random((102, 105)).astype("float32"),
             'Y': numpy.random.random((102, 105)).astype("float32")
diff --git a/python/paddle/v2/framework/tests/test_gradient_checker.py b/python/paddle/v2/framework/tests/test_gradient_checker.py
index e0b3151208..857427cdfb 100644
--- a/python/paddle/v2/framework/tests/test_gradient_checker.py
+++ b/python/paddle/v2/framework/tests/test_gradient_checker.py
@@ -7,7 +7,7 @@ from gradient_checker import get_numeric_gradient
 
 class GetNumericGradientTest(unittest.TestCase):
     def test_add_op(self):
-        add_op = Operator('add_two', X="X", Y="Y", Out="Z")
+        add_op = Operator('add', X="X", Y="Y", Out="Z")
         x = numpy.random.random((10, 1)).astype("float32")
         y = numpy.random.random((10, 1)).astype("float32")
 
diff --git a/python/paddle/v2/framework/tests/test_net.py b/python/paddle/v2/framework/tests/test_net.py
index 9339cf28da..e4b7cd480c 100644
--- a/python/paddle/v2/framework/tests/test_net.py
+++ b/python/paddle/v2/framework/tests/test_net.py
@@ -15,7 +15,7 @@ def fc(X, W, Y):
 class TestNet(unittest.TestCase):
     def test_net_all(self):
         net = core.Net.create()
-        op1 = Operator("add_two", X="X", Y="Y", Out="Out")
+        op1 = Operator("add", X="X", Y="Y", Out="Out")
         net.append_op(op1)
 
         net2 = core.Net.create()
@@ -26,7 +26,7 @@ class TestNet(unittest.TestCase):
 
         expected = '''
 Op(plain_net), inputs:{all[W, X, Y]}, outputs:{all[Out, fc.out, pre_activation]}.
-    Op(add_two), inputs:{X[X], Y[Y]}, outputs:{Out[Out]}.
+    Op(add), inputs:{X[X], Y[Y]}, outputs:{Out[Out]}.
     Op(plain_net), inputs:{all[W, X]}, outputs:{all[fc.out, pre_activation]}.
         Op(plain_net), inputs:{all[W, X]}, outputs:{all[fc.out, pre_activation]}.
             Op(mul), inputs:{X[X], Y[W]}, outputs:{Out[pre_activation]}.
diff --git a/python/paddle/v2/framework/tests/test_operator.py b/python/paddle/v2/framework/tests/test_operator.py
index 1abc4eeb57..040556322d 100644
--- a/python/paddle/v2/framework/tests/test_operator.py
+++ b/python/paddle/v2/framework/tests/test_operator.py
@@ -193,10 +193,10 @@ class TestOpDescCreationMethod(unittest.TestCase):
 
 class TestOpCreations(unittest.TestCase):
     def test_all(self):
-        add_op = op.Operator("add_two", X="a", Y="b", Out="z")
+        add_op = op.Operator("add", X="a", Y="b", Out="z")
         self.assertIsNotNone(add_op)
         # Invoke C++ DebugString()
-        self.assertEqual('Op(add_two), inputs:{X[a], Y[b]}, outputs:{Out[z]}.',
+        self.assertEqual('Op(add), inputs:{X[a], Y[b]}, outputs:{Out[z]}.',
                          str(add_op))
 
 
diff --git a/python/paddle/v2/framework/tests/test_recurrent_op.py b/python/paddle/v2/framework/tests/test_recurrent_op.py
index d6000ab9f9..22e680fd78 100644
--- a/python/paddle/v2/framework/tests/test_recurrent_op.py
+++ b/python/paddle/v2/framework/tests/test_recurrent_op.py
@@ -146,7 +146,7 @@ class TestRecurrentOp(unittest.TestCase):
         stepnet = core.Net.create()
         x_fc_op = Operator("mul", X="x@alias", Y="W", Out="Wx")
         h_fc_op = Operator("mul", X="h@pre", Y="U", Out="Uh")
-        sum_op = Operator("add_two", X="Wx", Y="Uh", Out="sum")
+        sum_op = Operator("add", X="Wx", Y="Uh", Out="sum")
         sig_op = Operator("sigmoid", X="sum", Y="h@alias")
 
         for op in [x_fc_op, h_fc_op, sum_op, sig_op]:

From e687f3f540d3a403ab376f6c533362a6e6c577ff Mon Sep 17 00:00:00 2001
From: wanghaoshuang <wanghaoshuang@baidu.com>
Date: Tue, 5 Sep 2017 17:37:12 +0800
Subject: [PATCH 60/72] Make attribute support for std::vector<std::pair<int,
 int>>

---
 paddle/framework/attribute.cc    | 12 ++++++++++++
 paddle/framework/attribute.h     |  3 ++-
 paddle/framework/framework.proto |  7 +++++++
 python/paddle/v2/framework/op.py |  7 ++++++-
 4 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/paddle/framework/attribute.cc b/paddle/framework/attribute.cc
index 9eb07acdff..27132eaa0b 100644
--- a/paddle/framework/attribute.cc
+++ b/paddle/framework/attribute.cc
@@ -43,6 +43,10 @@ template <>
 AttrType AttrTypeID<std::vector<std::string>>() {
   return STRINGS;
 }
+template <>
+AttrType AttrTypeID<std::vector<std::pair<int, int>>>() {
+  return INT_PAIRS;
+}
 
 Attribute GetAttrValue(const OpDesc::Attr& attr_desc) {
   switch (attr_desc.type()) {
@@ -76,6 +80,14 @@ Attribute GetAttrValue(const OpDesc::Attr& attr_desc) {
       }
       return val;
     }
+    case paddle::framework::AttrType::INT_PAIRS: {
+      std::vector<std::pair<int, int>> val(attr_desc.int_pairs_size());
+      for (int i = 0; i < attr_desc.int_pairs_size(); ++i) {
+        val[i].first = attr_desc.int_pairs(i).first();
+        val[i].second = attr_desc.int_pairs(i).second();
+      }
+      return val;
+    }
   }
   PADDLE_ENFORCE(false, "Unknown OpDesc::AttrDesc::type !");
   return boost::blank();
diff --git a/paddle/framework/attribute.h b/paddle/framework/attribute.h
index 08b47cabd4..071879a9d4 100644
--- a/paddle/framework/attribute.h
+++ b/paddle/framework/attribute.h
@@ -28,7 +28,8 @@ namespace paddle {
 namespace framework {
 
 typedef boost::variant<boost::blank, int, float, std::string, std::vector<int>,
-                       std::vector<float>, std::vector<std::string>>
+                       std::vector<float>, std::vector<std::string>,
+                       std::vector<std::pair<int, int>>>
     Attribute;
 
 typedef std::unordered_map<std::string, Attribute> AttributeMap;
diff --git a/paddle/framework/framework.proto b/paddle/framework/framework.proto
index ae44a1ffd4..368136a972 100644
--- a/paddle/framework/framework.proto
+++ b/paddle/framework/framework.proto
@@ -22,8 +22,14 @@ enum AttrType {
   INTS = 3;
   FLOATS = 4;
   STRINGS = 5;
+  INT_PAIRS = 6;
 }
 
+message IntPair {
+  required int32 first = 1;
+  required int32 second = 2;
+};
+
 // OpDesc describes an instance of a C++ framework::OperatorBase
 // derived class type.
 message OpDesc {
@@ -37,6 +43,7 @@ message OpDesc {
     repeated int32 ints = 6;
     repeated float floats = 7;
     repeated string strings = 8;
+    repeated IntPair int_pairs = 9;
   };
 
   message Var {
diff --git a/python/paddle/v2/framework/op.py b/python/paddle/v2/framework/op.py
index e7e932f6fe..0349407a85 100644
--- a/python/paddle/v2/framework/op.py
+++ b/python/paddle/v2/framework/op.py
@@ -94,9 +94,14 @@ class OpDescCreationMethod(object):
                     new_attr.floats.extend(user_defined_attr)
                 elif attr.type == framework_pb2.STRINGS:
                     new_attr.strings.extend(user_defined_attr)
+                elif attr.type == framework_pb2.INT_PAIRS:
+                    for p in user_defined_attr:
+                        pair = new_attr.pairs.add()
+                        pair.first = p[0]
+                        pair.second = p[1]
                 else:
                     raise NotImplementedError("Not support attribute type " +
-                                              attr.type)
+                                              str(attr.type))
 
         return op_desc
 

From 2beaf3aa2a966980177ea0a0d309fd7a7a594a1c Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Tue, 5 Sep 2017 18:12:42 +0800
Subject: [PATCH 61/72] auto find .cc or .cu in operator/CMakeLists.txt

---
 paddle/operators/CMakeLists.txt | 54 +++++++++++++++------------------
 1 file changed, 24 insertions(+), 30 deletions(-)

diff --git a/paddle/operators/CMakeLists.txt b/paddle/operators/CMakeLists.txt
index 90185101c4..99b8e1967f 100644
--- a/paddle/operators/CMakeLists.txt
+++ b/paddle/operators/CMakeLists.txt
@@ -14,27 +14,31 @@ function(op_library TARGET)
     cmake_parse_arguments(op_library "${options}" "${oneValueArgs}"
             "${multiValueArgs}" ${ARGN})
 
-    foreach(src ${op_library_SRCS})
-        if (${src} MATCHES ".*\\.cu$")
-            list(APPEND cu_srcs ${src})
-        elseif(${src} MATCHES ".*\\.cc$")
-            list(APPEND cc_srcs ${src})
-        else()
-            message(FATAL_ERROR "${TARGET} Source file ${src} should only be .cc or .cu")
+    list(LENGTH op_library_SRCS op_library_SRCS_len)
+    if (${op_library_SRCS_len} EQUAL 0)
+        if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET}.cc)
+            list(APPEND cc_srcs ${TARGET}.cc)
         endif()
-    endforeach()
+        if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET}.cu)
+            list(APPEND cu_srcs ${TARGET}.cc)
+        endif()
+    else()
+        foreach(src ${op_library_SRCS})
+            if (${src} MATCHES ".*\\.cu$")
+                list(APPEND cu_srcs ${src})
+            elseif(${src} MATCHES ".*\\.cc$")
+                list(APPEND cc_srcs ${src})
+            else()
+                message(FATAL_ERROR "${TARGET} Source file ${src} should only be .cc or .cu")
+            endif()
+        endforeach()
+    endif()
 
     list(LENGTH cc_srcs cc_srcs_len)
     if (${cc_srcs_len} EQUAL 0)
         message(FATAL_ERROR "The op library ${TARGET} should contains at least one .cc file")
     endif()
 
-    list(LENGTH cu_srcs cu_srcs_len)
-    list(LENGTH op_library_DEPS dep_len)
-    if (${cu_srcs_len} EQUAL 0 AND ${dep_len} EQUAL 0)
-        message(WARNING "The op library ${TARGET} not support GPU!")
-    endif()
-
     if (WITH_GPU)
         nv_library(${TARGET} SRCS ${cc_srcs} ${cu_srcs} DEPS ${op_library_DEPS}
                 ${op_common_deps})
@@ -46,32 +50,22 @@ endfunction()
 
 add_subdirectory(math)
 
-set(ONLYCPU_OPS
-    net_op
-    gather_op
-    scatter_op)
-foreach(src ${ONLYCPU_OPS})
-    op_library(${src} SRCS ${src}.cc)
-endforeach()
-
 set(DEPS_OPS
     identity_op
     minus_op
     mul_op
     recurrent_op
     scale_op)
-op_library(identity_op SRCS identity_op.cc DEPS scale_op)
-op_library(minus_op SRCS minus_op.cc minus_op.cu DEPS scale_op)
-op_library(mul_op SRCS mul_op.cc mul_op.cu DEPS math_function)
+op_library(identity_op DEPS scale_op)
+op_library(minus_op DEPS scale_op)
+op_library(mul_op DEPS math_function)
 op_library(recurrent_op SRCS recurrent_op.cc rnn/recurrent_op_utils.cc 
   DEPS framework_proto tensor operator net_op)
-op_library(scale_op SRCS scale_op.cc scale_op.cu DEPS net_op)
+op_library(scale_op DEPS net_op)
 
-list(REMOVE_ITEM GENERAL_OPS
-     ${ONLYCPU_OPS}
-     ${DEPS_OPS})
+list(REMOVE_ITEM GENERAL_OPS ${DEPS_OPS})
 foreach(src ${GENERAL_OPS})
-    op_library(${src} SRCS ${src}.cc ${src}.cu)
+    op_library(${src})
 endforeach()
 
 set(GLOB_OP_LIB ${OP_LIBRARY} CACHE INTERNAL "Global OP library")

From 42513496f30c137e42b54fab6ce275845349bccf Mon Sep 17 00:00:00 2001
From: Luo Tao <luotao02@baidu.com>
Date: Tue, 5 Sep 2017 22:17:24 +0800
Subject: [PATCH 62/72] fix a type error in operator/CMakeLists.txt

---
 paddle/operators/CMakeLists.txt | 2 +-
 paddle/operators/add_op.cu      | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/paddle/operators/CMakeLists.txt b/paddle/operators/CMakeLists.txt
index 99b8e1967f..8a0ff1eb53 100644
--- a/paddle/operators/CMakeLists.txt
+++ b/paddle/operators/CMakeLists.txt
@@ -20,7 +20,7 @@ function(op_library TARGET)
             list(APPEND cc_srcs ${TARGET}.cc)
         endif()
         if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET}.cu)
-            list(APPEND cu_srcs ${TARGET}.cc)
+            list(APPEND cu_srcs ${TARGET}.cu)
         endif()
     else()
         foreach(src ${op_library_SRCS})
diff --git a/paddle/operators/add_op.cu b/paddle/operators/add_op.cu
index fdf2c66c7c..d9c6d20a6c 100644
--- a/paddle/operators/add_op.cu
+++ b/paddle/operators/add_op.cu
@@ -12,8 +12,6 @@
    See the License for the specific language governing permissions and
    limitations under the License. */
 
-#define EIGEN_USE_GPU
-#include "paddle/framework/op_registry.h"
 #include "paddle/operators/add_op.h"
 
 namespace ops = paddle::operators;

From dc520da763f258e6ca1c79f79bb82bc55ec4cf14 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Tue, 5 Sep 2017 23:08:21 +0800
Subject: [PATCH 63/72] update doc of softmax_op.

---
 paddle/operators/softmax_op.cc | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/paddle/operators/softmax_op.cc b/paddle/operators/softmax_op.cc
index 40c51a64c4..7d062ad67c 100644
--- a/paddle/operators/softmax_op.cc
+++ b/paddle/operators/softmax_op.cc
@@ -24,7 +24,7 @@ class SoftmaxOp : public framework::OperatorWithKernel {
  protected:
   void InferShape(const framework::InferShapeContext &ctx) const override {
     PADDLE_ENFORCE(ctx.Input<Tensor>("X")->dims().size() == 2UL,
-                   "The input of softmax op must be matrix");
+                   "The input of softmax op must be a matrix.");
     ctx.Output<Tensor>("Y")->Resize(ctx.Input<Tensor>("X")->dims());
   }
 };
@@ -34,9 +34,27 @@ class SoftmaxOpMaker : public framework::OpProtoAndCheckerMaker {
   SoftmaxOpMaker(framework::OpProto *proto,
                  framework::OpAttrChecker *op_checker)
       : OpProtoAndCheckerMaker(proto, op_checker) {
-    AddInput("X", "input of softmax");
-    AddOutput("Y", "output of softmax");
-    AddComment("Softmax Op");
+    AddInput("X",
+             "The input tensor of softmax. "
+             "2-D with shape [batch_size, input_feature_dimensions].");
+    AddOutput("Y", "The normalized values with the same shape as X.");
+    AddComment(R"DOC(
+The input of softmax operator is a 2-D tensor with shape N x K (N is the
+batch_size, K is the dimension of input feature). The output tensor has the
+same shape as the input tensor.
+
+For each row of the input tensor, the softmax operator squashes the
+K-dimensional vector of arbitrary real values to a K-dimensional vector of real
+values in the range [0, 1] that add up to 1. Specifically, it computes the
+exponential of the given dimension and the sum of exponential values of all
+the other dimensions in the K-dimensional vector input. Then the ratio of the
+exponential of the given dimension and the sum of exponential values of all
+the other dimensions is the output of the softmax operator.
+
+For each row `i` and each column `j` in X, we have:
+    Y[i, j] = exp(X[i, j]) / sum_j(exp(X[i, j]))
+
+)DOC");
   }
 };
 

From bc0f9495f019d9f72bf9d6a82f97673c7dce0063 Mon Sep 17 00:00:00 2001
From: fengjiayi <fengjiayi@baidu.com>
Date: Tue, 5 Sep 2017 13:43:51 -0700
Subject: [PATCH 64/72] Move two tests form `op_registry_test` to
 `operator_test`

1. TEST(ProtoMaker, DuplicatedAttr)
2. TEST(ProtoMaker, DuplicatedInOut)
---
 paddle/framework/op_registry_test.cc | 34 +---------------------------
 paddle/framework/operator_test.cc    | 34 ++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/paddle/framework/op_registry_test.cc b/paddle/framework/op_registry_test.cc
index 50c45919c5..b43f6a8cc5 100644
--- a/paddle/framework/op_registry_test.cc
+++ b/paddle/framework/op_registry_test.cc
@@ -174,36 +174,4 @@ TEST(OpRegistry, CustomChecker) {
   op->Run(scope, dev_ctx);
   int test_attr = op->GetAttr<int>("test_attr");
   ASSERT_EQ(test_attr, 4);
-}
-
-class TestAttrProtoMaker : public pd::OpProtoAndCheckerMaker {
- public:
-  TestAttrProtoMaker(pd::OpProto* proto, pd::OpAttrChecker* op_checker)
-      : OpProtoAndCheckerMaker(proto, op_checker) {
-    AddAttr<float>("scale", "scale of test op");
-    AddAttr<float>("scale", "scale of test op");
-  }
-};
-
-TEST(ProtoMaker, DuplicatedAttr) {
-  pd::OpProto op_proto;
-  pd::OpAttrChecker op_checker;
-  auto proto_maker = TestAttrProtoMaker(&op_proto, &op_checker);
-  ASSERT_THROW(proto_maker.Validate(), paddle::platform::EnforceNotMet);
-}
-
-class TestInOutProtoMaker : public pd::OpProtoAndCheckerMaker {
- public:
-  TestInOutProtoMaker(pd::OpProto* proto, pd::OpAttrChecker* op_checker)
-      : OpProtoAndCheckerMaker(proto, op_checker) {
-    AddInput("input", "input of test op");
-    AddInput("input", "input of test op");
-  }
-};
-
-TEST(ProtoMaker, DuplicatedInOut) {
-  pd::OpProto op_proto;
-  pd::OpAttrChecker op_checker;
-  auto proto_maker = TestInOutProtoMaker(&op_proto, &op_checker);
-  ASSERT_THROW(proto_maker.Validate(), paddle::platform::EnforceNotMet);
-}
+}
\ No newline at end of file
diff --git a/paddle/framework/operator_test.cc b/paddle/framework/operator_test.cc
index f7c9e6b196..8a1970c7a8 100644
--- a/paddle/framework/operator_test.cc
+++ b/paddle/framework/operator_test.cc
@@ -263,4 +263,38 @@ TEST(Operator, Clone) {
   OperatorClone a("ABC", {}, {}, {});
   auto b = a.Clone();
   ASSERT_EQ(a.Type(), b->Type());
+}
+
+class TestAttrProtoMaker : public paddle::framework::OpProtoAndCheckerMaker {
+ public:
+  TestAttrProtoMaker(paddle::framework::OpProto* proto,
+                     paddle::framework::OpAttrChecker* op_checker)
+      : OpProtoAndCheckerMaker(proto, op_checker) {
+    AddAttr<float>("scale", "scale of test op");
+    AddAttr<float>("scale", "scale of test op");
+  }
+};
+
+TEST(ProtoMaker, DuplicatedAttr) {
+  paddle::framework::OpProto op_proto;
+  paddle::framework::OpAttrChecker op_checker;
+  auto proto_maker = TestAttrProtoMaker(&op_proto, &op_checker);
+  ASSERT_THROW(proto_maker.Validate(), paddle::platform::EnforceNotMet);
+}
+
+class TestInOutProtoMaker : public paddle::framework::OpProtoAndCheckerMaker {
+ public:
+  TestInOutProtoMaker(paddle::framework::OpProto* proto,
+                      paddle::framework::OpAttrChecker* op_checker)
+      : OpProtoAndCheckerMaker(proto, op_checker) {
+    AddInput("input", "input of test op");
+    AddInput("input", "input of test op");
+  }
+};
+
+TEST(ProtoMaker, DuplicatedInOut) {
+  paddle::framework::OpProto op_proto;
+  paddle::framework::OpAttrChecker op_checker;
+  auto proto_maker = TestInOutProtoMaker(&op_proto, &op_checker);
+  ASSERT_THROW(proto_maker.Validate(), paddle::platform::EnforceNotMet);
 }
\ No newline at end of file

From fd0e1e893f22e1ef27fb9f1e6d12c590d2fcdeea Mon Sep 17 00:00:00 2001
From: fengjiayi <fengjiayi@baidu.com>
Date: Tue, 5 Sep 2017 17:42:14 -0700
Subject: [PATCH 65/72] Fix warnings in lookup_op

---
 paddle/operators/lookup_table_op.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/paddle/operators/lookup_table_op.h b/paddle/operators/lookup_table_op.h
index 4da8079b91..877b36cef4 100644
--- a/paddle/operators/lookup_table_op.h
+++ b/paddle/operators/lookup_table_op.h
@@ -30,12 +30,12 @@ class LookupTableKernel : public framework::OpKernel {
     auto ids_t = context.Input<Tensor>("Ids");      // int tensor
     auto output_t = context.Output<Tensor>("Out");  // float tensor
 
-    size_t N = table_t->dims()[0];
-    size_t D = table_t->dims()[1];
+    int N = table_t->dims()[0];
+    int D = table_t->dims()[1];
     auto ids = ids_t->data<int32_t>();
     auto table = table_t->data<T>();
     auto output = output_t->mutable_data<T>(context.GetPlace());
-    for (size_t i = 0; i < product(ids_t->dims()); ++i) {
+    for (ssize_t i = 0; i < product(ids_t->dims()); ++i) {
       PADDLE_ENFORCE_LT(ids[i], N);
       PADDLE_ENFORCE_GE(ids[i], 0);
       memcpy(output + i * D, table + ids[i] * D, D * sizeof(T));
@@ -51,8 +51,8 @@ class LookupTableGradKernel : public framework::OpKernel {
     auto d_output_t = context.Input<Tensor>(framework::GradVarName("Out"));
     auto d_table_t = context.Output<Tensor>(framework::GradVarName("W"));
 
-    size_t N = d_table_t->dims()[0];
-    size_t D = d_table_t->dims()[1];
+    int N = d_table_t->dims()[0];
+    int D = d_table_t->dims()[1];
     auto ids = ids_t->data<int32_t>();
     const T* d_output = d_output_t->data<T>();
     T* d_table = d_table_t->mutable_data<T>(context.GetPlace());
@@ -61,10 +61,10 @@ class LookupTableGradKernel : public framework::OpKernel {
     t.device(context.GetEigenDevice<platform::CPUPlace>()) =
         t.constant(static_cast<T>(0));
 
-    for (size_t i = 0; i < product(ids_t->dims()); ++i) {
+    for (ssize_t i = 0; i < product(ids_t->dims()); ++i) {
       PADDLE_ENFORCE_LT(ids[i], N);
       PADDLE_ENFORCE_GE(ids[i], 0);
-      for (size_t j = 0; j < D; ++j) {
+      for (int j = 0; j < D; ++j) {
         d_table[ids[i] * D + j] += d_output[i * D + j];
       }
     }

From 5d9478094d8721f312d9fec323920e608ed23e66 Mon Sep 17 00:00:00 2001
From: lispc <lispc@qq.com>
Date: Wed, 6 Sep 2017 11:33:16 +0800
Subject: [PATCH 66/72] PyDataProvider2.InputType repr refine style

---
 python/paddle/trainer/PyDataProvider2.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/python/paddle/trainer/PyDataProvider2.py b/python/paddle/trainer/PyDataProvider2.py
index 033c71cf8f..248da4ae8d 100644
--- a/python/paddle/trainer/PyDataProvider2.py
+++ b/python/paddle/trainer/PyDataProvider2.py
@@ -87,7 +87,8 @@ class InputType(object):
 
     def __repr__(self):
         """
-        Return a human readable representation like 'InputType(dim=25921, seq_type=SequenceType.NO_SEQUENCE, type=DataType.Dense)'
+        Return a human readable representation like 'InputType(dim=25921, 
+            seq_type=SequenceType.NO_SEQUENCE, type=DataType.Dense)'
         """
         repr_str = type(self).__name__
         repr_str += '('

From 11163dfc7a6c1504c42acf77bd48d677d7167941 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Wed, 6 Sep 2017 11:54:33 +0800
Subject: [PATCH 67/72] make dim int to int64_t

---
 paddle/framework/ddim.cc                   | 64 ++++++++++-----------
 paddle/framework/ddim.h                    | 20 +++----
 paddle/framework/ddim_test.cc              |  4 +-
 paddle/framework/dim.h                     | 67 +++++++++++-----------
 paddle/framework/dim_test.cu               |  4 +-
 paddle/framework/eigen.h                   |  2 +-
 paddle/framework/tensor_impl.h             |  4 +-
 paddle/operators/gaussian_random_op.cc     | 10 +++-
 paddle/operators/rnn/recurrent_op_utils.cc |  2 +-
 paddle/operators/uniform_random_op.cc      | 10 +++-
 paddle/pybind/pybind.cc                    |  2 +-
 paddle/pybind/tensor_py.h                  |  4 +-
 12 files changed, 102 insertions(+), 91 deletions(-)

diff --git a/paddle/framework/ddim.cc b/paddle/framework/ddim.cc
index cfd3e8dfde..85b7de7974 100644
--- a/paddle/framework/ddim.cc
+++ b/paddle/framework/ddim.cc
@@ -21,16 +21,16 @@ namespace framework {
 /// @cond HIDDEN
 
 template <int i>
-Dim<i> make_dim(const int* d) {
+Dim<i> make_dim(const int64_t* d) {
   return Dim<i>(*d, make_dim<i - 1>(d + 1));
 }
 
 template <>
-Dim<1> make_dim<1>(const int* d) {
+Dim<1> make_dim<1>(const int64_t* d) {
   return Dim<1>(*d);
 }
 
-void make_ddim(DDim& ddim, const int* dims, int n) {
+void make_ddim(DDim& ddim, const int64_t* dims, int n) {
   switch (n) {
     case 1:
       ddim = make_dim<1>(dims);
@@ -67,13 +67,13 @@ void make_ddim(DDim& ddim, const int* dims, int n) {
 
 /// @endcond
 
-DDim make_ddim(std::initializer_list<int> dims) {
+DDim make_ddim(std::initializer_list<int64_t> dims) {
   DDim result(make_dim(0));
   make_ddim(result, dims.begin(), dims.size());
   return result;
 }
 
-DDim make_ddim(const std::vector<int>& dims) {
+DDim make_ddim(const std::vector<int64_t>& dims) {
   DDim result(make_dim(0));
   make_ddim(result, &dims[0], dims.size());
   return result;
@@ -81,12 +81,12 @@ DDim make_ddim(const std::vector<int>& dims) {
 
 /// @cond HIDDEN
 // XXX For some reason, putting this in an anonymous namespace causes errors
-class DynamicMutableIndexer : public boost::static_visitor<int&> {
+class DynamicMutableIndexer : public boost::static_visitor<int64_t&> {
  public:
   explicit DynamicMutableIndexer(int idx) : idx_(idx) {}
 
   template <int D>
-  int& operator()(Dim<D>& dim) const {
+  int64_t& operator()(Dim<D>& dim) const {
     return dim[idx_];
   }
 
@@ -94,12 +94,12 @@ class DynamicMutableIndexer : public boost::static_visitor<int&> {
   int idx_;
 };
 
-class DynamicConstIndexer : public boost::static_visitor<int> {
+class DynamicConstIndexer : public boost::static_visitor<int64_t> {
  public:
   explicit DynamicConstIndexer(int idx) : idx_(idx) {}
 
   template <int D>
-  int operator()(const Dim<D>& dim) const {
+  int64_t operator()(const Dim<D>& dim) const {
     return dim[idx_];
   }
 
@@ -109,22 +109,22 @@ class DynamicConstIndexer : public boost::static_visitor<int> {
 
 /// @endcond
 
-int& DDim::operator[](int idx) {
+int64_t& DDim::operator[](int idx) {
   return boost::apply_visitor(DynamicMutableIndexer(idx), var);
 }
 
-int DDim::operator[](int idx) const {
+int64_t DDim::operator[](int idx) const {
   return boost::apply_visitor(DynamicConstIndexer(idx), var);
 }
 
-ssize_t DDim::size() const { return arity(*this); }
+int64_t DDim::size() const { return arity(*this); }
 
 bool DDim::operator==(DDim d) const {
   if (var.which() != d.getVar().which()) {
     return false;
   } else {
-    std::vector<int> v1 = vectorize(*this);
-    std::vector<int> v2 = vectorize(d);
+    std::vector<int64_t> v1 = vectorize(*this);
+    std::vector<int64_t> v2 = vectorize(d);
 
     for (unsigned int i = 0; i < v1.size(); i++) {
       if (v1[i] != v2[i]) {
@@ -139,10 +139,10 @@ bool DDim::operator==(DDim d) const {
 bool DDim::operator!=(DDim d) const { return !(*this == d); }
 
 DDim DDim::operator+(DDim d) const {
-  std::vector<int> v1 = vectorize(*this);
-  std::vector<int> v2 = vectorize(d);
+  std::vector<int64_t> v1 = vectorize(*this);
+  std::vector<int64_t> v2 = vectorize(d);
 
-  std::vector<int> v3;
+  std::vector<int64_t> v3;
 
   assert(v1.size() == v2.size());
 
@@ -154,10 +154,10 @@ DDim DDim::operator+(DDim d) const {
 }
 
 DDim DDim::operator*(DDim d) const {
-  std::vector<int> v1 = vectorize(*this);
-  std::vector<int> v2 = vectorize(d);
+  std::vector<int64_t> v1 = vectorize(*this);
+  std::vector<int64_t> v2 = vectorize(d);
 
-  std::vector<int> v3;
+  std::vector<int64_t> v3;
 
   assert(v1.size() == v2.size());
 
@@ -168,15 +168,15 @@ DDim DDim::operator*(DDim d) const {
   return make_ddim(v3);
 }
 
-int get(const DDim& ddim, int idx) { return ddim[idx]; }
+int64_t get(const DDim& ddim, int idx) { return ddim[idx]; }
 
 void set(DDim& ddim, int idx, int value) { ddim[idx] = value; }
 
 /// @cond HIDDEN
 struct VectorizeVisitor : public boost::static_visitor<> {
-  std::vector<int>& vector;
+  std::vector<int64_t>& vector;
 
-  explicit VectorizeVisitor(std::vector<int>& v) : vector(v) {}
+  explicit VectorizeVisitor(std::vector<int64_t>& v) : vector(v) {}
 
   template <typename T>
   void operator()(const T& t) {
@@ -188,31 +188,31 @@ struct VectorizeVisitor : public boost::static_visitor<> {
 };
 /// @endcond
 
-std::vector<int> vectorize(const DDim& ddim) {
-  std::vector<int> result;
+std::vector<int64_t> vectorize(const DDim& ddim) {
+  std::vector<int64_t> result;
   VectorizeVisitor visitor(result);
   boost::apply_visitor(visitor, ddim);
   return result;
 }
 
-struct ProductVisitor : public boost::static_visitor<ssize_t> {
+struct ProductVisitor : public boost::static_visitor<int64_t> {
   template <int D>
-  ssize_t operator()(const Dim<D>& dim) {
+  int64_t operator()(const Dim<D>& dim) {
     return product(dim);
   }
 };
 
-ssize_t product(const DDim& ddim) {
+int64_t product(const DDim& ddim) {
   ProductVisitor visitor;
   return boost::apply_visitor(visitor, ddim);
 }
 
 struct SliceVectorizeVisitor : public boost::static_visitor<> {
-  std::vector<int>& vector;
+  std::vector<int64_t>& vector;
   int begin;
   int end;
 
-  SliceVectorizeVisitor(std::vector<int>& v, int b, int e)
+  SliceVectorizeVisitor(std::vector<int64_t>& v, int b, int e)
       : vector(v), begin(b), end(e) {
     PADDLE_ENFORCE(begin < end,
                    "Begin index must be less than end index in ddim slice.");
@@ -240,7 +240,7 @@ struct SliceVectorizeVisitor : public boost::static_visitor<> {
 };
 
 DDim slice_ddim(const DDim& dim, int begin, int end) {
-  std::vector<int> vec;
+  std::vector<int64_t> vec;
   vec.reserve(end - begin);
   SliceVectorizeVisitor visitor(vec, begin, end);
   boost::apply_visitor(visitor, dim);
@@ -280,7 +280,7 @@ std::ostream& operator<<(std::ostream& os, const DDim& ddim) {
   return os;
 }
 
-DDim::DDim(std::initializer_list<int> init_list) {
+DDim::DDim(std::initializer_list<int64_t> init_list) {
   *this = make_ddim(init_list);
 }
 }  // namespace framework
diff --git a/paddle/framework/ddim.h b/paddle/framework/ddim.h
index 95f294b627..db30c52394 100644
--- a/paddle/framework/ddim.h
+++ b/paddle/framework/ddim.h
@@ -40,7 +40,7 @@ struct DDim {
   template <int D>
   explicit DDim(const Dim<D>& in) : var(in) {}
 
-  /*implicit*/ DDim(std::initializer_list<int> init_list);
+  /*implicit*/ DDim(std::initializer_list<int64_t> init_list);
 
   template <int D>
   DDim& operator=(const Dim<D>& in) {
@@ -48,8 +48,8 @@ struct DDim {
     return *this;
   }
 
-  int& operator[](int idx);
-  int operator[](int idx) const;
+  int64_t& operator[](int idx);
+  int64_t operator[](int idx) const;
 
   template <typename Visitor>
   typename Visitor::result_type apply_visitor(Visitor& visitor) {
@@ -71,15 +71,15 @@ struct DDim {
 
   DDim operator*(DDim d) const;
 
-  ssize_t size() const;
+  int64_t size() const;
 };
 
 /**
- * \brief Make a DDim from std::vector<int>
+ * \brief Make a DDim from std::vector<int64_t>
  *
  * \param dims An vector of ints. Must be sized between [1, 9]
  */
-DDim make_ddim(const std::vector<int>& dims);
+DDim make_ddim(const std::vector<int64_t>& dims);
 
 /**
  * \brief Make a DDim from an initializer list
@@ -87,14 +87,14 @@ DDim make_ddim(const std::vector<int>& dims);
  * \param dims An initializer list of ints. Must be sized between [1, 9]
  *
  */
-DDim make_ddim(std::initializer_list<int> dims);
+DDim make_ddim(std::initializer_list<int64_t> dims);
 
-int get(const DDim& dim, int idx);
+int64_t get(const DDim& dim, int idx);
 void set(DDim& dim, int idx, int val);
 
-std::vector<int> vectorize(const DDim& ddim);
+std::vector<int64_t> vectorize(const DDim& ddim);
 
-ssize_t product(const DDim& ddim);
+int64_t product(const DDim& ddim);
 
 /**
  * \brief Slice a ddim
diff --git a/paddle/framework/ddim_test.cc b/paddle/framework/ddim_test.cc
index 9d18a2972c..756232b1b5 100644
--- a/paddle/framework/ddim_test.cc
+++ b/paddle/framework/ddim_test.cc
@@ -12,7 +12,7 @@ TEST(DDim, Equality) {
   EXPECT_EQ(ddim[2], 5);
 
   // construct a DDim from a vector
-  std::vector<int> vec({9, 1, 5});
+  std::vector<int64_t> vec({9, 1, 5});
   paddle::framework::DDim vddim = paddle::framework::make_ddim(vec);
   EXPECT_EQ(ddim[0], 9);
   EXPECT_EQ(ddim[1], 1);
@@ -25,7 +25,7 @@ TEST(DDim, Equality) {
   EXPECT_EQ(paddle::framework::get(ddim, 0), 6);
 
   // vectorize a DDim
-  std::vector<int> res_vec = paddle::framework::vectorize(vddim);
+  std::vector<int64_t> res_vec = paddle::framework::vectorize(vddim);
   EXPECT_EQ(res_vec[0], 9);
   EXPECT_EQ(res_vec[1], 1);
   EXPECT_EQ(res_vec[2], 5);
diff --git a/paddle/framework/dim.h b/paddle/framework/dim.h
index 883fdc55eb..04d4b0e604 100644
--- a/paddle/framework/dim.h
+++ b/paddle/framework/dim.h
@@ -17,13 +17,13 @@ struct Dim {
   static constexpr int dimensions = i;
 
   template <typename... Args>
-  HOSTDEVICE Dim(int _head, Args... _tail) : head(_head), tail(_tail...) {
+  HOSTDEVICE Dim(int64_t _head, Args... _tail) : head(_head), tail(_tail...) {
     static_assert(sizeof...(_tail) == i - 1,
                   "Dim initialized with the wrong number of parameters");
   }
 
   HOSTDEVICE
-  Dim(int _head, const Dim<i - 1>& _tail) : head(_head), tail(_tail) {}
+  Dim(int64_t _head, const Dim<i - 1>& _tail) : head(_head), tail(_tail) {}
 
   HOSTDEVICE
   Dim() : head(0), tail() {}
@@ -31,12 +31,12 @@ struct Dim {
   /** Construct a Dim from a linear index and size.  Uses Fortran order
    * indexing. */
   HOSTDEVICE
-  Dim(int idx, const Dim<i>& size)
+  Dim(int64_t idx, const Dim<i>& size)
       : head(idx % size.head), tail(idx / size.head, size.tail) {}
 
   /** Construct a Dim with each dimension set to the given index */
   HOSTDEVICE
-  Dim(int idx) : head(idx), tail(idx) {}
+  Dim(int64_t idx) : head(idx), tail(idx) {}
 
   HOSTDEVICE
   bool operator==(const Dim<i>& o) const {
@@ -47,13 +47,13 @@ struct Dim {
   bool operator!=(const Dim<i>& o) const { return !(*this == o); }
 
   HOSTDEVICE
-  int& operator[](int idx);
+  int64_t& operator[](int idx);
   HOSTDEVICE
-  int operator[](int idx) const;
+  int64_t operator[](int idx) const;
 
   HOST std::string to_string() const;
 
-  int head;
+  int64_t head;
   Dim<i - 1> tail;
 };
 
@@ -63,7 +63,7 @@ struct Dim<1> {
   static constexpr int dimensions = 1;
 
   HOSTDEVICE
-  Dim(int _head) : head(_head) {}
+  Dim(int64_t _head) : head(_head) {}
 
   HOSTDEVICE
   Dim() : head(0) {}
@@ -86,11 +86,11 @@ struct Dim<1> {
   bool operator!=(const Dim<1>& o) const { return !(*this == o); }
 
   HOSTDEVICE
-  int& operator[](int idx);
+  int64_t& operator[](int idx);
   HOSTDEVICE
-  int operator[](int idx) const;
+  int64_t operator[](int idx) const;
 
-  int head;
+  int64_t head;
 };
 
 namespace {
@@ -100,12 +100,12 @@ template <int i>
 struct DimGetter {
   // Return a copy if Dim is const
   template <typename D>
-  HOSTDEVICE static int impl(const D& d) {
+  HOSTDEVICE static int64_t impl(const D& d) {
     return DimGetter<i - 1>::impl(d.tail);
   }
   // Return a reference if Dim is mutable
   template <typename D>
-  HOSTDEVICE static int& impl(D& d) {
+  HOSTDEVICE static int64_t& impl(D& d) {
     return DimGetter<i - 1>::impl(d.tail);
   }
 };
@@ -115,18 +115,18 @@ template <>
 struct DimGetter<0> {
   // Return a copy if Dim is const
   template <typename D>
-  HOSTDEVICE static int impl(const D& d) {
+  HOSTDEVICE static int64_t impl(const D& d) {
     return d.head;
   }
   // Return a reference if Dim is mutable
   template <typename D>
-  HOSTDEVICE static int& impl(D& d) {
+  HOSTDEVICE static int64_t& impl(D& d) {
     return d.head;
   }
 };
 
 template <int D>
-HOSTDEVICE int& indexer(Dim<D>& dim, int idx) {
+HOSTDEVICE int64_t& indexer(Dim<D>& dim, int idx) {
 #ifndef __CUDA_ARCH__
   if (idx < 0) {
     throw std::invalid_argument("Tried to access a negative dimension");
@@ -141,7 +141,7 @@ HOSTDEVICE int& indexer(Dim<D>& dim, int idx) {
 }
 
 template <>
-HOSTDEVICE int& indexer<1>(Dim<1>& dim, int idx) {
+HOSTDEVICE int64_t& indexer<1>(Dim<1>& dim, int idx) {
 #ifndef __CUDA_ARCH__
   if (idx != 0) {
     throw std::invalid_argument("Invalid index");
@@ -153,7 +153,7 @@ HOSTDEVICE int& indexer<1>(Dim<1>& dim, int idx) {
 }
 
 template <int D>
-HOSTDEVICE int indexer(const Dim<D>& dim, int idx) {
+HOSTDEVICE int64_t indexer(const Dim<D>& dim, int idx) {
 #ifndef __CUDA_ARCH__
   if (idx < 0) {
     throw std::invalid_argument("Tried to access a negative dimension");
@@ -168,7 +168,7 @@ HOSTDEVICE int indexer(const Dim<D>& dim, int idx) {
 }
 
 template <>
-HOSTDEVICE int indexer<1>(const Dim<1>& dim, int idx) {
+HOSTDEVICE int64_t indexer<1>(const Dim<1>& dim, int idx) {
 #ifndef __CUDA_ARCH__
   if (idx != 0) {
     throw std::invalid_argument("Invalid index");
@@ -182,73 +182,76 @@ HOSTDEVICE int indexer<1>(const Dim<1>& dim, int idx) {
 }  // namespace
 // Static access to constant Dim
 template <int i, int l>
-HOSTDEVICE int get(const Dim<l>& d) {
+HOSTDEVICE int64_t get(const Dim<l>& d) {
   return DimGetter<i>::impl(d);
 }
 
 // Static access to mutable Dim
 template <int i, int l>
-HOSTDEVICE int& get(Dim<l>& d) {
+HOSTDEVICE int64_t& get(Dim<l>& d) {
   return DimGetter<i>::impl(d);
 }
 
 // Dynamic access to constant Dim
 template <int l>
-HOSTDEVICE int Dim<l>::operator[](int i) const {
+HOSTDEVICE int64_t Dim<l>::operator[](int i) const {
   return indexer(*this, i);
 }
 
 // Dynamic access to mutable Dim
 template <int l>
-HOSTDEVICE int& Dim<l>::operator[](int i) {
+HOSTDEVICE int64_t& Dim<l>::operator[](int i) {
   return indexer(*this, i);
 }
 
 // Dynamic access to constant Dim
-inline HOSTDEVICE int Dim<1>::operator[](int i) const {
+inline HOSTDEVICE int64_t Dim<1>::operator[](int i) const {
   return indexer(*this, i);
 }
 
 // Dynamic access to mutable Dim
-inline HOSTDEVICE int& Dim<1>::operator[](int i) { return indexer(*this, i); }
+inline HOSTDEVICE int64_t& Dim<1>::operator[](int i) {
+  return indexer(*this, i);
+}
 
 // Dynamic access to constant Dim
 // without std::enable_if will try to instantiate this on get<0>(d)
 template <int l>
-HOSTDEVICE typename std::enable_if<(l > 0), int>::type get(const Dim<l>& d,
-                                                           int i) {
+HOSTDEVICE typename std::enable_if<(l > 0), int64_t>::type get(const Dim<l>& d,
+                                                               int i) {
   return d[i];
 }
 
 // Dynamic access to mutable Dim
 template <int l>
-HOSTDEVICE typename std::enable_if<(l > 0), int&>::type get(Dim<l>& d, int i) {
+HOSTDEVICE typename std::enable_if<(l > 0), int64_t&>::type get(Dim<l>& d,
+                                                                int i) {
   return d[i];
 }
 
 // Dot product of two dims
 template <int i>
-HOSTDEVICE int linearize(const Dim<i>& a, const Dim<i>& b) {
+HOSTDEVICE int64_t linearize(const Dim<i>& a, const Dim<i>& b) {
   return a.head * b.head + linearize(a.tail, b.tail);
 }
 
 // Base case dot product of two Dims
 // Notice it is inline because it is no longer a template
 template <>
-HOSTDEVICE inline int linearize(const Dim<1>& a, const Dim<1>& b) {
+HOSTDEVICE inline int64_t linearize(const Dim<1>& a, const Dim<1>& b) {
   return a.head * b.head;
 }
 
 // Product of a Dim
 template <int i>
-HOSTDEVICE int product(const Dim<i>& a, int prod = 1) {
+HOSTDEVICE int64_t product(const Dim<i>& a, int prod = 1) {
   return prod * a.head * product(a.tail);
 }
 
 // Base case product of a Dim
 // Notice it is inline because it is no longer a template
 template <>
-HOSTDEVICE inline int product(const Dim<1>& a, int prod) {
+HOSTDEVICE inline int64_t product(const Dim<1>& a, int prod) {
   return prod * a.head;
 }
 
diff --git a/paddle/framework/dim_test.cu b/paddle/framework/dim_test.cu
index 3898d0a447..f42b1eeadf 100644
--- a/paddle/framework/dim_test.cu
+++ b/paddle/framework/dim_test.cu
@@ -47,9 +47,9 @@ TEST(Dim, Equality) {
   EXPECT_EQ(b[1], 11);
 
   // dynamic access on GPU
-  thrust::device_vector<int> r(1);
+  thrust::device_vector<int64_t> r(1);
   dyn_idx_gpu<<<1, 1>>>(thrust::raw_pointer_cast(r.data()));
-  int res = r[0];
+  int64_t res = r[0];
   EXPECT_EQ(res, 6);
 
   // ex_prefix_mul
diff --git a/paddle/framework/eigen.h b/paddle/framework/eigen.h
index a4667cc51f..2d8d9ae10c 100644
--- a/paddle/framework/eigen.h
+++ b/paddle/framework/eigen.h
@@ -28,7 +28,7 @@ struct EigenDim {
   static Type From(const DDim& dims) {
     PADDLE_ENFORCE(arity(dims) == D, "D must match arity(DDim)");
     Type ret;
-    for (int d = 0; d < arity(dims); d++) {
+    for (int64_t d = 0; d < arity(dims); d++) {
       ret[d] = dims[d];
     }
     return ret;
diff --git a/paddle/framework/tensor_impl.h b/paddle/framework/tensor_impl.h
index 7893e233b7..94f436294f 100644
--- a/paddle/framework/tensor_impl.h
+++ b/paddle/framework/tensor_impl.h
@@ -58,7 +58,7 @@ inline T* Tensor::mutable_data(platform::Place place) {
                     "Tensor's numel must be larger than zero to call "
                     "Tensor::mutable_data. Call Tensor::set_dim first.");
   /* some versions of boost::variant don't have operator!= */
-  size_t size = product(dims_) * sizeof(T);
+  int64_t size = product(dims_) * sizeof(T);
   if (holder_ == nullptr || !(holder_->place() == place) ||
       holder_->size() < size + offset_) {
     if (platform::is_cpu_place(place)) {
@@ -131,7 +131,7 @@ inline Tensor Tensor::Slice(const int& begin_idx, const int& end_idx) const {
   PADDLE_ENFORCE_LT(begin_idx, end_idx,
                     "Begin index must be less than end index.");
   PADDLE_ENFORCE_NE(dims_[0], 1, "Can not slice a tensor with dims_[0] = 1.");
-  int base = product(dims_) / dims_[0];
+  size_t base = product(dims_) / dims_[0];
   Tensor dst;
   dst.holder_ = holder_;
   DDim dst_dims = dims_;
diff --git a/paddle/operators/gaussian_random_op.cc b/paddle/operators/gaussian_random_op.cc
index 056447901d..583c9e5774 100644
--- a/paddle/operators/gaussian_random_op.cc
+++ b/paddle/operators/gaussian_random_op.cc
@@ -31,8 +31,8 @@ class CPUGaussianRandomKernel : public framework::OpKernel {
     }
     engine.seed(seed);
     std::normal_distribution<T> dist(mean, std);
-    ssize_t size = framework::product(tensor->dims());
-    for (ssize_t i = 0; i < size; ++i) {
+    int64_t size = framework::product(tensor->dims());
+    for (int64_t i = 0; i < size; ++i) {
       data[i] = dist(engine);
     }
   }
@@ -46,9 +46,13 @@ class GaussianRandomOp : public framework::OperatorWithKernel {
   void InferShape(const framework::InferShapeContext& context) const override {
     auto* tensor = context.Output<framework::Tensor>("Out");
     auto dims = GetAttr<std::vector<int>>("dims");
+    std::vector<int64_t> temp(dims.size());
+    for (auto dim : dims) {
+      temp.push_back(static_cast<int64_t>(dim));
+    }
     PADDLE_ENFORCE(dims.size() > 0UL,
                    "dims can be one int or array. dims must be set.");
-    tensor->Resize(framework::make_ddim(dims));
+    tensor->Resize(framework::make_ddim(temp));
   }
 };
 
diff --git a/paddle/operators/rnn/recurrent_op_utils.cc b/paddle/operators/rnn/recurrent_op_utils.cc
index a9b65c30f2..69e723b401 100644
--- a/paddle/operators/rnn/recurrent_op_utils.cc
+++ b/paddle/operators/rnn/recurrent_op_utils.cc
@@ -61,7 +61,7 @@ void ConcatOutputs(const std::vector<Scope*>& step_scopes,
       PADDLE_ENFORCE(step_scope_var != nullptr, "%s not in scope",
                      outlinks[i].internal);
       f::DDim step_dims = step_scope_var->template GetMutable<Tensor>()->dims();
-      std::vector<int> dims_vec = vectorize(step_dims);
+      std::vector<int64_t> dims_vec = vectorize(step_dims);
       dims_vec.insert(dims_vec.begin(), seq_len);
       output->Resize(f::make_ddim(dims_vec));
     } else {
diff --git a/paddle/operators/uniform_random_op.cc b/paddle/operators/uniform_random_op.cc
index 2d943c4508..3241d4289a 100644
--- a/paddle/operators/uniform_random_op.cc
+++ b/paddle/operators/uniform_random_op.cc
@@ -35,8 +35,8 @@ class CPUUniformRandomKernel : public framework::OpKernel {
     std::uniform_real_distribution<T> dist(
         static_cast<T>(context.GetAttr<float>("min")),
         static_cast<T>(context.GetAttr<float>("max")));
-    ssize_t size = framework::product(tensor->dims());
-    for (ssize_t i = 0; i < size; ++i) {
+    int64_t size = framework::product(tensor->dims());
+    for (int64_t i = 0; i < size; ++i) {
       data[i] = dist(engine);
     }
   }
@@ -52,7 +52,11 @@ class UniformRandomOp : public framework::OperatorWithKernel {
                    "uniform_random's min must less then max");
     auto* tensor = ctx.Output<framework::Tensor>("Out");
     auto dims = GetAttr<std::vector<int>>("dims");
-    tensor->Resize(framework::make_ddim(dims));
+    std::vector<int64_t> temp(dims.size());
+    for (auto dim : dims) {
+      temp.push_back(static_cast<int64_t>(dim));
+    }
+    tensor->Resize(framework::make_ddim(temp));
   }
 };
 
diff --git a/paddle/pybind/pybind.cc b/paddle/pybind/pybind.cc
index 6896422617..7db629a68f 100644
--- a/paddle/pybind/pybind.cc
+++ b/paddle/pybind/pybind.cc
@@ -76,7 +76,7 @@ PYBIND11_PLUGIN(core) {
       .def("get_dims",
            [](const Tensor &self) { return vectorize(self.dims()); })
       .def("set_dims",
-           [](Tensor &self, const std::vector<int> &dim) {
+           [](Tensor &self, const std::vector<int64_t> &dim) {
              self.Resize(make_ddim(dim));
            })
       .def("alloc_float",
diff --git a/paddle/pybind/tensor_py.h b/paddle/pybind/tensor_py.h
index 39ba60b4dc..95171acf72 100644
--- a/paddle/pybind/tensor_py.h
+++ b/paddle/pybind/tensor_py.h
@@ -85,7 +85,7 @@ void PyCPUTensorSetFromArray(
     framework::Tensor &self,
     py::array_t<T, py::array::c_style | py::array::forcecast> array,
     paddle::platform::CPUPlace &place) {
-  std::vector<int> dims;
+  std::vector<int64_t> dims;
   dims.reserve(array.ndim());
   for (size_t i = 0; i < array.ndim(); ++i) {
     dims.push_back((int)array.shape()[i]);
@@ -102,7 +102,7 @@ void PyCUDATensorSetFromArray(
     framework::Tensor &self,
     py::array_t<T, py::array::c_style | py::array::forcecast> array,
     paddle::platform::GPUPlace &place) {
-  std::vector<int> dims;
+  std::vector<int64_t> dims;
   dims.reserve(array.ndim());
   for (size_t i = 0; i < array.ndim(); ++i) {
     dims.push_back((int)array.shape()[i]);

From 857cd24a35bef9c182292ca709fe1dd9d0e52e19 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Wed, 6 Sep 2017 12:18:23 +0800
Subject: [PATCH 68/72] fix dim_test.cu bug

---
 paddle/framework/dim_test.cu | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/paddle/framework/dim_test.cu b/paddle/framework/dim_test.cu
index f42b1eeadf..0a6a87669c 100644
--- a/paddle/framework/dim_test.cu
+++ b/paddle/framework/dim_test.cu
@@ -8,7 +8,7 @@ __global__ void test(paddle::framework::Dim<2>* o) {
   o[0] = paddle::framework::make_dim(5, 6);
 }
 
-__global__ void dyn_idx_gpu(int* o) {
+__global__ void dyn_idx_gpu(int64_t* o) {
   auto d = paddle::framework::make_dim(5, 6);
   o[0] = d[1];
 }

From a5f1e6d6bdd094253cd6f47bc7bbefb1fbc3b1e4 Mon Sep 17 00:00:00 2001
From: Xinghai Sun <sunxinghai1216@gmail.com>
Date: Wed, 6 Sep 2017 12:58:00 +0800
Subject: [PATCH 69/72] Update cos_sim operator by following reviewer's
 comments.

---
 paddle/operators/cos_sim_op.cc                |  4 +-
 paddle/operators/cos_sim_op.h                 | 97 ++++++++++---------
 .../v2/framework/tests/test_cos_sim_op.py     | 38 +++++---
 3 files changed, 76 insertions(+), 63 deletions(-)

diff --git a/paddle/operators/cos_sim_op.cc b/paddle/operators/cos_sim_op.cc
index 3760d0b161..c033af3b74 100644
--- a/paddle/operators/cos_sim_op.cc
+++ b/paddle/operators/cos_sim_op.cc
@@ -90,8 +90,8 @@ class CosSimOpGrad : public framework::OperatorWithKernel {
 
     auto *x_grad = ctx.Output<Tensor>(framework::GradVarName("X"));
     auto *y_grad = ctx.Output<Tensor>(framework::GradVarName("Y"));
-    x_grad->Resize(x_dims);
-    y_grad->Resize(y_dims);
+    if (x_grad) x_grad->Resize(x_dims);
+    if (y_grad) y_grad->Resize(y_dims);
   }
 };
 
diff --git a/paddle/operators/cos_sim_op.h b/paddle/operators/cos_sim_op.h
index 69d35d8bc2..9e3ff26815 100644
--- a/paddle/operators/cos_sim_op.h
+++ b/paddle/operators/cos_sim_op.h
@@ -28,30 +28,30 @@ template <typename Place, typename T>
 class CosSimKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& context) const override {
-    auto* x = context.Input<Tensor>("X");
-    auto* y = context.Input<Tensor>("Y");
-    auto* z = context.Output<Tensor>("Out");
-    auto* x_norm = context.Output<Tensor>("XNorm");
-    auto* y_norm = context.Output<Tensor>("YNorm");
+    auto* input_x = context.Input<Tensor>("X");
+    auto* input_y = context.Input<Tensor>("Y");
+    auto* output_z = context.Output<Tensor>("Out");
+    auto* output_x_norm = context.Output<Tensor>("XNorm");
+    auto* output_y_norm = context.Output<Tensor>("YNorm");
 
-    z->mutable_data<T>(context.GetPlace());
-    x_norm->mutable_data<T>(context.GetPlace());
-    y_norm->mutable_data<T>(context.GetPlace());
+    output_z->mutable_data<T>(context.GetPlace());
+    output_x_norm->mutable_data<T>(context.GetPlace());
+    output_y_norm->mutable_data<T>(context.GetPlace());
 
-    auto dims = x->dims();
+    auto dims = input_x->dims();
     int size = static_cast<int>(framework::product(dims));
     auto new_dims = framework::make_ddim({dims[0], size / dims[0]});
-    auto X = EigenMatrix<T>::From(*x, new_dims);
-    auto Y = EigenMatrix<T>::From(*y, new_dims);
-    auto Z = EigenMatrix<T>::From(*z);
-    auto XNorm = EigenMatrix<T>::From(*x_norm);
-    auto YNorm = EigenMatrix<T>::From(*y_norm);
+    auto x = EigenMatrix<T>::From(*input_x, new_dims);
+    auto y = EigenMatrix<T>::From(*input_y, new_dims);
+    auto z = EigenMatrix<T>::From(*output_z);
+    auto x_norm = EigenMatrix<T>::From(*output_x_norm);
+    auto y_norm = EigenMatrix<T>::From(*output_y_norm);
 
     auto place = context.GetEigenDevice<Place>();
-    auto XY = (X * Y).sum(Eigen::array<int, 1>({1}));
-    XNorm.device(place) = (X * X).sum(Eigen::array<int, 1>({1})).sqrt();
-    YNorm.device(place) = (Y * Y).sum(Eigen::array<int, 1>({1})).sqrt();
-    Z.device(place) = XY / XNorm / YNorm;
+    auto xy = (x * y).sum(Eigen::array<int, 1>({1}));
+    x_norm.device(place) = x.square().sum(Eigen::array<int, 1>({1})).sqrt();
+    y_norm.device(place) = y.square().sum(Eigen::array<int, 1>({1})).sqrt();
+    z.device(place) = xy / x_norm / y_norm;
   }
 };
 
@@ -59,41 +59,44 @@ template <typename Place, typename T>
 class CosSimGradKernel : public framework::OpKernel {
  public:
   void Compute(const framework::ExecutionContext& context) const override {
-    auto* x = context.Input<Tensor>("X");
-    auto* y = context.Input<Tensor>("Y");
-    auto* z = context.Input<Tensor>("Out");
-    auto* x_norm = context.Input<Tensor>("XNorm");
-    auto* y_norm = context.Input<Tensor>("YNorm");
-    auto* grad_x = context.Output<Tensor>(framework::GradVarName("X"));
-    auto* grad_y = context.Output<Tensor>(framework::GradVarName("Y"));
-    auto* grad_z = context.Input<Tensor>(framework::GradVarName("Out"));
+    auto* input_x = context.Input<Tensor>("X");
+    auto* input_y = context.Input<Tensor>("Y");
+    auto* input_z = context.Input<Tensor>("Out");
+    auto* input_x_norm = context.Input<Tensor>("XNorm");
+    auto* input_y_norm = context.Input<Tensor>("YNorm");
+    auto* output_grad_x = context.Output<Tensor>(framework::GradVarName("X"));
+    auto* output_grad_y = context.Output<Tensor>(framework::GradVarName("Y"));
+    auto* input_grad_z = context.Input<Tensor>(framework::GradVarName("Out"));
 
-    grad_x->mutable_data<T>(context.GetPlace());
-    grad_y->mutable_data<T>(context.GetPlace());
-
-    auto dims = x->dims();
+    auto dims = input_x->dims();
     int size = static_cast<int>(framework::product(dims));
     auto new_dims = framework::make_ddim({dims[0], size / dims[0]});
-    auto X = EigenMatrix<T>::From(*x, new_dims);
-    auto Y = EigenMatrix<T>::From(*y, new_dims);
-    auto Z = EigenMatrix<T>::From(*z);
-    auto X_norm = EigenMatrix<T>::From(*x_norm);
-    auto Y_norm = EigenMatrix<T>::From(*y_norm);
-    auto dX = EigenMatrix<T>::From(*grad_x, new_dims);
-    auto dY = EigenMatrix<T>::From(*grad_y, new_dims);
-    auto dZ = EigenMatrix<T>::From(*grad_z);
+    auto x = EigenMatrix<T>::From(*input_x, new_dims);
+    auto y = EigenMatrix<T>::From(*input_y, new_dims);
+    auto z = EigenMatrix<T>::From(*input_z);
+    auto x_norm = EigenMatrix<T>::From(*input_x_norm);
+    auto y_norm = EigenMatrix<T>::From(*input_y_norm);
+    auto dz = EigenMatrix<T>::From(*input_grad_z);
 
     Eigen::DSizes<int, 2> bcast(1, new_dims[1]);
-    auto Z_bcast = Z.broadcast(bcast);
-    auto dZ_bcast = dZ.broadcast(bcast);
+    auto z_bcast = z.broadcast(bcast);
+    auto dz_bcast = dz.broadcast(bcast);
     auto place = context.GetEigenDevice<Place>();
-    auto X_snorm_bcast = X_norm.square().eval().broadcast(bcast);
-    auto Y_snorm_bcast = Y_norm.square().eval().broadcast(bcast);
-    auto norm_prod_bcast = (X_norm * Y_norm).eval().broadcast(bcast);
-    dX.device(place) =
-        dZ_bcast * (Y / norm_prod_bcast - Z_bcast * X / X_snorm_bcast);
-    dY.device(place) =
-        dZ_bcast * (X / norm_prod_bcast - Z_bcast * Y / Y_snorm_bcast);
+    auto x_snorm_bcast = x_norm.square().eval().broadcast(bcast);
+    auto y_snorm_bcast = y_norm.square().eval().broadcast(bcast);
+    auto norm_prod_bcast = (x_norm * y_norm).eval().broadcast(bcast);
+    if (output_grad_x) {
+      output_grad_x->mutable_data<T>(context.GetPlace());
+      auto dx = EigenMatrix<T>::From(*output_grad_x, new_dims);
+      dx.device(place) =
+          dz_bcast * (y / norm_prod_bcast - z_bcast * x / x_snorm_bcast);
+    }
+    if (output_grad_y) {
+      output_grad_y->mutable_data<T>(context.GetPlace());
+      auto dy = EigenMatrix<T>::From(*output_grad_y, new_dims);
+      dy.device(place) =
+          dz_bcast * (x / norm_prod_bcast - z_bcast * y / y_snorm_bcast);
+    }
   }
 };
 
diff --git a/python/paddle/v2/framework/tests/test_cos_sim_op.py b/python/paddle/v2/framework/tests/test_cos_sim_op.py
index a19be47f76..32013a7999 100644
--- a/python/paddle/v2/framework/tests/test_cos_sim_op.py
+++ b/python/paddle/v2/framework/tests/test_cos_sim_op.py
@@ -24,26 +24,36 @@ class TestCosSimOp(unittest.TestCase):
         }
 
 
-class CosSimGradOpTest(GradientChecker):
-    def test_cos_sim_2d(self):
-        op = create_op("cos_sim")
-        inputs = {
+class TestCosSimGradOp(GradientChecker):
+    def setUp(self):
+        self.op = create_op("cos_sim")
+        self.inputs = {
             'X': np.random.random((10, 5)).astype("float32"),
             'Y': np.random.random((10, 5)).astype("float32")
         }
-        self.compare_grad(op, inputs)
+
+    def test_cpu_gpu_compare(self):
+        self.compare_grad(self.op, self.inputs)
+
+    def test_normal(self):
         self.check_grad(
-            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.05)
+            self.op, self.inputs, ["X", "Y"], "Out", max_relative_error=0.05)
 
-    def test_cos_sim_3d(self):
-        op = create_op("cos_sim")
-        inputs = {
-            'X': np.random.random((10, 5, 2)).astype("float32"),
-            'Y': np.random.random((10, 5, 2)).astype("float32")
-        }
-        self.compare_grad(op, inputs)
+    def test_ignore_x(self):
+        self.check_grad(
+            self.op,
+            self.inputs, ["Y"],
+            "Out",
+            max_relative_error=0.05,
+            no_grad_set={"X"})
+
+    def test_ignore_y(self):
         self.check_grad(
-            op, inputs, set(["X", "Y"]), "Out", max_relative_error=0.05)
+            self.op,
+            self.inputs, ["X"],
+            "Out",
+            max_relative_error=0.05,
+            no_grad_set={"Y"})
 
 
 if __name__ == '__main__':

From 52f2bc1f9d84a05f1c73428124a1235fb141f193 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Wed, 6 Sep 2017 13:34:01 +0800
Subject: [PATCH 70/72] fix vector size error

---
 paddle/operators/gaussian_random_op.cc | 3 ++-
 paddle/operators/uniform_random_op.cc  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/paddle/operators/gaussian_random_op.cc b/paddle/operators/gaussian_random_op.cc
index 583c9e5774..8bb61275ba 100644
--- a/paddle/operators/gaussian_random_op.cc
+++ b/paddle/operators/gaussian_random_op.cc
@@ -46,7 +46,8 @@ class GaussianRandomOp : public framework::OperatorWithKernel {
   void InferShape(const framework::InferShapeContext& context) const override {
     auto* tensor = context.Output<framework::Tensor>("Out");
     auto dims = GetAttr<std::vector<int>>("dims");
-    std::vector<int64_t> temp(dims.size());
+    std::vector<int64_t> temp;
+    temp.reserve(dims.size());
     for (auto dim : dims) {
       temp.push_back(static_cast<int64_t>(dim));
     }
diff --git a/paddle/operators/uniform_random_op.cc b/paddle/operators/uniform_random_op.cc
index 3241d4289a..40cef8942a 100644
--- a/paddle/operators/uniform_random_op.cc
+++ b/paddle/operators/uniform_random_op.cc
@@ -52,7 +52,8 @@ class UniformRandomOp : public framework::OperatorWithKernel {
                    "uniform_random's min must less then max");
     auto* tensor = ctx.Output<framework::Tensor>("Out");
     auto dims = GetAttr<std::vector<int>>("dims");
-    std::vector<int64_t> temp(dims.size());
+    std::vector<int64_t> temp;
+    temp.reserve(dims.size());
     for (auto dim : dims) {
       temp.push_back(static_cast<int64_t>(dim));
     }

From 1e419d9ed3610c95b518982a026666ea3f699f27 Mon Sep 17 00:00:00 2001
From: qijun <qijun1994@hotmail.com>
Date: Wed, 6 Sep 2017 17:24:47 +0800
Subject: [PATCH 71/72] fix clang build and run error

---
 paddle/operators/cos_sim_op.h | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/paddle/operators/cos_sim_op.h b/paddle/operators/cos_sim_op.h
index 9e3ff26815..9e2bcebe3b 100644
--- a/paddle/operators/cos_sim_op.h
+++ b/paddle/operators/cos_sim_op.h
@@ -23,6 +23,9 @@ using Tensor = framework::Tensor;
 template <typename T, int MajorType = Eigen::RowMajor,
           typename IndexType = Eigen::DenseIndex>
 using EigenMatrix = framework::EigenMatrix<T, MajorType, IndexType>;
+template <typename T, int MajorType = Eigen::RowMajor,
+          typename IndexType = Eigen::DenseIndex>
+using EigenVector = framework::EigenVector<T, MajorType, IndexType>;
 
 template <typename Place, typename T>
 class CosSimKernel : public framework::OpKernel {
@@ -43,14 +46,14 @@ class CosSimKernel : public framework::OpKernel {
     auto new_dims = framework::make_ddim({dims[0], size / dims[0]});
     auto x = EigenMatrix<T>::From(*input_x, new_dims);
     auto y = EigenMatrix<T>::From(*input_y, new_dims);
-    auto z = EigenMatrix<T>::From(*output_z);
-    auto x_norm = EigenMatrix<T>::From(*output_x_norm);
-    auto y_norm = EigenMatrix<T>::From(*output_y_norm);
+    auto z = EigenVector<T>::Flatten(*output_z);
+    auto x_norm = EigenVector<T>::Flatten(*output_x_norm);
+    auto y_norm = EigenVector<T>::Flatten(*output_y_norm);
 
     auto place = context.GetEigenDevice<Place>();
-    auto xy = (x * y).sum(Eigen::array<int, 1>({1}));
-    x_norm.device(place) = x.square().sum(Eigen::array<int, 1>({1})).sqrt();
-    y_norm.device(place) = y.square().sum(Eigen::array<int, 1>({1})).sqrt();
+    auto xy = (x * y).sum(Eigen::array<int, 1>({{1}}));
+    x_norm.device(place) = x.square().sum(Eigen::array<int, 1>({{1}})).sqrt();
+    y_norm.device(place) = y.square().sum(Eigen::array<int, 1>({{1}})).sqrt();
     z.device(place) = xy / x_norm / y_norm;
   }
 };

From db5e726d160789f05fb8323c6915991e5a276339 Mon Sep 17 00:00:00 2001
From: caoying03 <caoying03@baidu.com>
Date: Wed, 6 Sep 2017 18:14:27 +0800
Subject: [PATCH 72/72] update the how to write op doc.

---
 doc/howto/dev/new_op_cn.md | 183 +++++++++++++++++++++----------------
 1 file changed, 102 insertions(+), 81 deletions(-)

diff --git a/doc/howto/dev/new_op_cn.md b/doc/howto/dev/new_op_cn.md
index 0d29865447..58665e9f2b 100644
--- a/doc/howto/dev/new_op_cn.md
+++ b/doc/howto/dev/new_op_cn.md
@@ -45,7 +45,9 @@ Kernel实现       | CPU、GPU共享Kernel实现在`.h`文件中,否则,CPU
 
 ### 1. 定义ProtoMaker类
 
-矩阵乘的公式:$Out = X * Y$, 可见该计算由两个输入,一个输出组成。首先定义`ProtoMaker`来描述该Op的输入、输出及注释:
+矩阵乘法的公式:$Out = X * Y$, 可见该计算由两个输入,一个输出组成。
+
+首先定义`ProtoMaker`来描述该Op的输入、输出,并添加注释:
 
 ```cpp
 class MulOpMaker : public framework::OpProtoAndCheckerMaker {
@@ -63,17 +65,17 @@ The equation is: Out = X * Y
 };
 ```
 
-[`MulOpMaker`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc#L43)继承自`framework::OpProtoAndCheckerMaker`,构造函数包括2个参数:
+[`MulOpMaker`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/mul_op.cc#L43)继承自`framework::OpProtoAndCheckerMaker`,构造函数含有2个参数:
 
    - `framework::OpProto` : 前者存储Op的输入输出和参数属性,将用于Python API接口的生成。
    - `framework::OpAttrChecker` :后者用于检查参数属性的合法性。
 
-构造函数里通过`AddInput`添加输入参数,通过`AddOutput`添加输出参数,通过`AddComment`添加该Op的注释,这些函数会将对应内容添加到`OpProto`中。
+构造函数里通过`AddInput`添加输入参数,通过`AddOutput`添加输出参数,通过`AddComment`添加Op的注释。这些函数会将对应内容添加到`OpProto`中。
 
-在`MulOp`中添加两个输入`X`和`Y`,添加了一个输出`Out`,并解释了各自含义,命名请遵守命名规范。
+上面的代码在`MulOp`中添加两个输入`X`和`Y`,添加了一个输出`Out`,并解释了各自含义,命名请遵守命名规范。
 
 
-再举个[`ScaleOp`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/scale_op.cc#L37)的例子:
+再以[`ScaleOp`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/scale_op.cc#L37)为例:
 
 ```cpp
 template <typename AttrType>
@@ -91,14 +93,16 @@ The equation is: Out = scale*X
 };
 ```
 
- 这个例子有两处不同:
+这个例子有两处不同:
+
+- `AddInput("X","...").NotInGradient()` : 表示`X`这个输入不参与`ScaleOp`对应的梯度Op计算之中,如果Op的某个输入不参与反向梯度的计算,请显示地调用`.NotInGradient()`进行设置。
 
-  - `AddInput("X","...").NotInGradient()` : 表示`X`这个输入不参与`ScaleOp`对应的梯度Op计算之中。
-  - `AddAttr<AttrType>("scale", "...").SetDefault(1.0);` : 增加`scale`系数,作为参数属性,并且设置默认值为1.0。
+- `AddAttr<AttrType>("scale", "...").SetDefault(1.0);` : 增加`scale`系数,作为参数属性,并且设置默认值为1.0。
 
 
 ### 2. 定义Operator类
 
+下面的点实现了MulOp的定义:
 
 ```cpp
 class MulOp : public framework::OperatorWithKernel {
@@ -143,14 +147,27 @@ MulOp(const std::string &type, const framework::VariableNameMap &inputs,
   - 1). 做检查, 尽早报错:检查输入数据维度、类型等是否合法。
   - 2). 设置输出Tensor的形状。
 
-通常`OpProtoMaker`和`Op`类的定义写在`.cc`文件中,和要讲到的注册函数一起放在`.cc`中
+通常`OpProtoMaker`和`Op`类的定义写在`.cc`文件中,和下面将要介绍的注册函数一起放在`.cc`中
 
 ### 3. 定义OpKernel类
 
-```cpp
-template <typename Place, typename T>
-class MulKernel : public framework::OpKernel {
- public:
+`MulKernel`继承自`framework::OpKernel`,带有下面两个模板参数:
+
+- `typename  Place`: 表示设备类型,不同设备(CPU、GPU)共享同一个Kernel时,需加该模板参数,不共享则不加,一个不共享的例子是[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。
+
+- `typename T` : 表示数据类型,如`float`, `double`等。
+
+需要为`MulKernel`类重写`Compute`接口。
+- `Compute`接受一个输入参数:`const framework::ExecutionContext& context`。
+- 与`InferShapeContext`相比,`ExecutionContext`增加了设备类型,同样可获取到输入输出和属性参数。
+- `Compute`函数里实现`OpKernel`的具体计算逻辑。
+
+下面是 `MulKernel` `Compute`的实现:
+
+  ```cpp
+  template <typename Place, typename T>
+  class MulKernel : public framework::OpKernel {
+  public:
   void Compute(const framework::ExecutionContext& context) const override {
     auto* X = context.Input<Tensor>("X");
     auto* Y = context.Input<Tensor>("Y");
@@ -160,50 +177,50 @@ class MulKernel : public framework::OpKernel {
         const_cast<platform::DeviceContext*>(context.device_context_);
     math::matmul<Place, T>(*X, false, *Y, false, 1, Z, 0, device_context);
   }
-};
-```
+  };
+  ```
 
-`MulKernel`继承自`framework::OpKernel`,带有模板参数:
+需要注意:**不同设备(CPU、GPU)共享一个Op定义,是否则共享同一个`OpKernel`,取决于`Compute`调用的函数是否支持不同设备。**
 
-  - `typename  Place`: 表示设备类型,不同设备(CPU、GPU)共享同一个Kernel时,需加该模板参数,不共享则不加,一个不共享的例子是[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。
+`MulOp`的CPU、GPU实现共享同一个`Kernel`。`OpKernel`不共享的例子可以参考:[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。
 
- - `typename T` : 表示数据类型,如`float`, `double`等。
+为了使`OpKernel`的计算过程书写更加简单,并且CPU、GPU的代码可以复用,我们通常借助 Eigen unsupported Tensor模块来实现`Compute`接口。关于在PaddlePaddle中如何使用Eigen库,请参考[使用文档](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/howto/dev/use_eigen_cn.md)。
 
-`MulKernel`需要重写`Compute`接口,该接口参数为`const framework::ExecutionContext& context`, `ExecutionContext`相比`InferShapeContext`增加了设备类型,同样可获取到输入输出和属性参数,`Compute`函数里写具体实现时。
 
-注意,不同设备(CPU、GPU)共享一个Op定义,是否则共享同一个`OpKernel`,取决于`Compute`调用的函数是否支持不同设备。`MulOp`的CPU、GPU实现共享同一个`Kernel`,`OpKernel`不共享的例子可以参考[`OnehotCrossEntropyOpKernel`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/operators/cross_entropy_op.h#L43)。 
+到此,前向Op实现完成。接下来,需要在`.cc`文件中注册该op和kernel。
+反向Op类的定义,反向OpKernel的定义与前向Op类似,这里不再赘述。**但需注意反向Op没有`ProtoMaker`**。
 
-为了使得`OpKernel`的计算过程书写较为简单,CPU、GPU的代码可以复用,我们通常借助Eigen unsupported Tensor模块来实现。关于在paddle中如何使用Eigen库,请参考对应的使用[文档](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/howto/dev/use_eigen_cn.md)
+### 4. 注册Operator
 
-到此前向Op实现完成,需要在`.cc`文件中注册该op和kernel。反向Op类的定义和Kernel定义与前向Op类似,这里不再重复。但注意,反向Op没有`ProtoMaker`。
+- 在`.cc`文件中注册前向、反向Op类,注册CPU Kernel。
 
-### 4. 注册Operator
+    ```cpp
+    namespace ops = paddle::operators;
+    REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
+    REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
+    REGISTER_OP_CPU_KERNEL(mul_grad,
+                  ops::MulGradKernel<paddle::platform::CPUPlace, float>);
+    ```
 
-在`.cc`文件中注册前向、反向Op类,注册CPU Kernel。
+   在上面的代码中:
 
-```cpp
-namespace ops = paddle::operators;
-REGISTER_OP(mul, ops::MulOp, ops::MulOpMaker, mul_grad, ops::MulOpGrad);
-REGISTER_OP_CPU_KERNEL(mul, ops::MulKernel<paddle::platform::CPUPlace, float>);
-REGISTER_OP_CPU_KERNEL(mul_grad,
-              ops::MulGradKernel<paddle::platform::CPUPlace, float>);
-```
+    - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,注册`ops::MulOpGrad`,类型名为`mul_grad`。
+    - `REGISTER_OP_WITHOUT_GRADIENT` : 用于注册没有反向的Op。
+    - `REGISTER_OP_CPU_KERNEL` :注册`ops::MulKernel`类,并特化模板参数为`paddle::platform::CPUPlace`和`float`类型,同理,注册`ops::MulKernel`类。
 
-  - `REGISTER_OP` : 注册`ops::MulOp`类,类型名为`mul`,该类的`ProtoMaker`为`ops::MulOpMaker`,注册`ops::MulOpGrad`,类型名为`mul_grad`,
-  - `REGISTER_OP_WITHOUT_GRADIENT` : 用于注册没有反向的Op。
-  - `REGISTER_OP_CPU_KERNEL` :注册`ops::MulKernel`类,并特化模板参数为`paddle::platform::CPUPlace`和`float`类型,同理,注册`ops::MulKernel`类。
 
-在 `.cu`文件中注册GPU Kernel。请注意,如果GPU Kernel的实现是基于Eigen unsupported模块,那么在 `.cu`的最前面请加上宏定义 `#define EIGEN_USE_GPU`
+- 在 `.cu`文件中注册GPU Kernel。
+    - 请注意,如果GPU Kernel的实现基于Eigen unsupported模块,那么在 `.cu`的开始请加上宏定义 `#define EIGEN_USE_GPU`,代码示例如下:
 
-```cpp
-// if use Eigen unsupported module before include head files
-#define EIGEN_USE_GPU
+    ```cpp
+    // if use Eigen unsupported module before include head files
+    #define EIGEN_USE_GPU
 
-namespace ops = paddle::operators;
-REGISTER_OP_GPU_KERNEL(mul, ops::MulKernel<paddle::platform::GPUPlace, float>);
-REGISTER_OP_GPU_KERNEL(mul_grad,
-                       ops::MulGradKernel<paddle::platform::GPUPlace, float>);
-```
+    namespace ops = paddle::operators;
+    REGISTER_OP_GPU_KERNEL(mul, ops::MulKernel<paddle::platform::GPUPlace, float>);
+    REGISTER_OP_GPU_KERNEL(mul_grad,
+                           ops::MulGradKernel<paddle::platform::GPUPlace, float>);
+    ```
 
 ### 5. 编译
 
@@ -225,7 +242,7 @@ REGISTER_OP_GPU_KERNEL(mul_grad,
 - 绑定Python
 
     在 [`paddle/pybind/pybind.cc
-`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/pybind.cc)文件中添加该类:
+`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/pybind.cc) 使用`USE_OP`告知编译器需要链接的Op,具体解释参考[代码注释](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/op_registry.h#L81)。
 
     ```
     USE_OP(mul);
@@ -242,50 +259,54 @@ REGISTER_OP_GPU_KERNEL(mul_grad,
     USE_NO_KENREL_OP(recurrent);
     ```
 
-    使用`USE_OP`告知编译器需要链接该Op的目标文件,具体解释参考[代码注释](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/op_registry.h#L81)。
-
 
  - 生成库
 
-   无需修改 [`paddle/pybind/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会自动被添加链接到生成的lib库中。
+   无需修改 [`paddle/pybind/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/pybind/CMakeLists.txt)文件,`paddle/operators` 目录下新增的 `*_op.cc` 文件会被自动添加链接到生成的lib库中。
 
 ## 实现单元测试
 
-单测包括对比前向Op不同设备(CPU、GPU)的实现、对比反向OP不同设备(CPU、GPU)的实现、反向Op的梯度测试。下面介绍介绍[`MulOp`的单测](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/test_mul_op.py)。
+单测包括对比前向Op不同设备(CPU、GPU)的实现、对比反向OP不同设备(CPU、GPU)的实现、反向Op的梯度测试。下面介绍介绍[`MulOp`的单元测试](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/test_mul_op.py)。
 
 ### 前向Operator单元测试
 
-前向Op单测继承自`unittest.TestCase`,并定义元类`__metaclass__ = OpTestMeta`,具体单测流程在`OpTestMeta`里完成。需在`setUp`函数定义输入输出和属性参数,以及Python对比的输出值。
+前向Op单元测试继承自`unittest.TestCase`,并定义元类`__metaclass__ = OpTestMeta`。各项更加具体的单元测试在`OpTestMeta`里完成。测试前向Operator,需要:
 
-```python
-import unittest
-import numpy as np
-from gradient_checker import GradientChecker, create_op
-from op_test_util import OpTestMeta
+1. 在`setUp`函数定义输入、输出,以及相关的属性参数。
+2. 生成随机的输入数据。
+3. 在Python脚本中实现与前向operator相同的计算逻辑,得到输出值,与operator前向计算的输出进行对比。
 
-class TestMulOp(unittest.TestCase):
-    __metaclass__ = OpTestMeta
 
-    def setUp(self):
-        self.type = "mul"
-        self.inputs = {
-            'X': np.random.random((32, 84)).astype("float32"),
-            'Y': np.random.random((84, 100)).astype("float32")
-        }
-        self.outputs = {'Out': np.dot(self.inputs['X'], self.inputs['Y'])}
-```
-   首先需要`import`必要的包,下面详细解释其他值:
+  ```python
+  import unittest
+  import numpy as np
+  from gradient_checker import GradientChecker, create_op
+  from op_test_util import OpTestMeta
+
+  class TestMulOp(unittest.TestCase):
+      __metaclass__ = OpTestMeta
 
-   - `self.type = "mul" ` : 定义类型,和注册的类型一致。
-   - `self.inputs` : 定义输入,类型为Numpy.array,并初始化。
-   - `self.outputs` : 定义输出,并得到Python结算结果。
+      def setUp(self):
+          self.type = "mul"
+          self.inputs = {
+              'X': np.random.random((32, 84)).astype("float32"),
+              'Y': np.random.random((84, 100)).astype("float32")
+          }
+          self.outputs = {'Out': np.dot(self.inputs['X'], self.inputs['Y'])}
+  ```
+
+上面的代码首先导入依赖的包,下面是对`setUp`函数中操作的重要变量的详细解释:
+
+- `self.type = "mul" ` : 定义类型,与operator注册时注册的类型一致。
+- `self.inputs` : 定义输入,类型为`numpy.array`,并初始化。
+- `self.outputs` : 定义输出,并在Python脚本中完成与operator同样的计算逻辑,返回Python端的计算结果。
 
 
 ### 反向Operator单元测试
 
-反向Op单测继承自`GradientChecker`,而`GradientChecker`集成自`unittest.TestCase`,所以反向单测函数需要`test_`开头。
+反向Op单元测试继承自`GradientChecker`,而`GradientChecker`继承自`unittest.TestCase`,因此,**反向单元测试函数需要以`test_`开头**。
 
-```cpp
+```python
 class TestMulGradOp(GradientChecker):
     def setUp(self):
         self.op = create_op("mul")
@@ -319,27 +340,27 @@ class TestMulGradOp(GradientChecker):
             no_grad_set={"Y"})
 ```
 
-下面解释一些关键的地方:
+下面解释代码中一些关键的地方:
 
-   - 调用`create_op("mul")`创建反向Op对应的前向Op。
-   - 调用`compare_grad`函数对比CPU、GPU计算结果。
-   - `test_normal`中调用`check_grad`检查梯度稳定性,这里采用数值法检测梯度正确性。
-      - 第一个参数`self.op` : 前向Op。
-      - 第二个参数`self.inputs` : 输入词典,词典的Key和`ProtoMaker`定义保持一致。
-      - 第三个参数`["X", "Y"]` : 指定对输入变量`X`、`Y`做梯度检测。
-      - 第四个参数`"Out"` : 指定前向网络最终的输出目标变量`Out`
-   - `test_ignore_x`和`test_ignore_y`分支测试只需要计算一个输入梯度的情况。
+- 调用`create_op("mul")`创建反向Op对应的前向Op。
+- 调用`compare_grad`函数对比CPU、GPU计算结果。
+- `test_normal`中调用`check_grad`使用数值法检测梯度正确性和稳定性。
+  - 第一个参数`self.op` : 前向Op。
+  - 第二个参数`self.inputs` : 输入词典,词典的Key和`ProtoMaker`定义保持一致。
+  - 第三个参数`["X", "Y"]` : 指定对输入变量`X`、`Y`做梯度检测。
+  - 第四个参数`"Out"` : 指定前向网络最终的输出目标变量`Out`
+- `test_ignore_x`和`test_ignore_y`分支用来测试只需要计算一个输入梯度的情况。
 
 
 ### 编译和执行单元测试
 
-单测完成之后,在[`python/paddle/v2/framework/tests/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/CMakeLists.txt)里添加以下内容将单测加入工程中:
+单元测试编写完成之后,在[`python/paddle/v2/framework/tests/CMakeLists.txt`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/framework/tests/CMakeLists.txt)中添加以下内容,将单元测试加入工程:
 
 ```
 py_test(test_mul_op SRCS test_mul_op.py)
 ```
 
-请注意,**不同于Op的编译测试,运行单元测试测时需要编译整个工程**,并且编译时需要打开`WITH_TESTING`, 即`cmake paddle_dir -DWITH_TESTING=ON`。编译成功后,执行下面的命令来运行单测:
+请注意,**不同于Op的编译测试,运行单元测试测时需要编译整个工程**,并且编译时需要打开`WITH_TESTING`, 即`cmake paddle_dir -DWITH_TESTING=ON`。编译成功后,执行下面的命令来运行单元测试:
 
 ```bash
 make test ARGS="-R test_mul_op -V"