1. 01 8月, 2017 2 次提交
    • Y
      Refine remove std::shared_ptr in Scope · 5d134a03
      Yu Yang 提交于
      * Make interface of Operator to `const Scope&`
      5d134a03
    • Q
      use operator context and infer context (#3024) · 61ebacbc
      Qiao Longfei 提交于
      * use operator context
      
      * optimize code
      
      * update net infershape
      
      * update InferShape
      
      * disable override InferShape(scope) in OperatorBase
      
      * change InferShapeImpl to InferShape
      
      * add template to OperatorContext Input/Output
      
      * merge Input InputVar, Output OutputVar
      
      * change Inputs to MultiInput
      
      * fix conflict
      
      * fix MultiInput bugs and add unit test
      
      * rename KernelContext to ExecutionContext
      
      * clean code
      
      * change InferShape to protected
      
      * fix template bug
      
      * refine code
      
      * use InputVar instead of Input<Variable>
      
      * typo
      
      * optimize code
      61ebacbc
  2. 31 7月, 2017 1 次提交
  3. 27 7月, 2017 1 次提交
  4. 26 7月, 2017 1 次提交
  5. 24 7月, 2017 1 次提交
    • Y
      Remove ScopePtr and OperatorPtr · c2543f5b
      Yu Yang 提交于
      * ScopePtr means pointer of scope, but it can be shared or uniqued.
      Change it to std::shared_ptr<Scope> to make code better to read.
      c2543f5b
  6. 19 7月, 2017 1 次提交
    • F
      Refactor Rigistry::CreateGradOp() · bf4da3d9
      fengjiayi 提交于
      We put forward Op's inputs, outputs and output gradients into Grad
      Op's inputs, and put forward Op's input gradients into Grad Op's output.
      So Grad Op's `in_out_idx`, `input_format` and 'output format' need to be
      rebuilt during Op creating.
      bf4da3d9
  7. 18 7月, 2017 2 次提交
  8. 17 7月, 2017 4 次提交
  9. 16 7月, 2017 1 次提交
    • Q
      change net to operator (#2846) · 45ce1649
      Qiao Longfei 提交于
      * OperatorBase should not store OpDesc because not All op contains an
        OpDesc and not all ops create from OpDesc.
        * Networks do not contain OpDesc and are not created by OpDesc
      * Do not register Network to OpRegistry.
        * The network is directly created by the user in Python. Not from
          registry.
      * Correctly handle the `inputs` and `outputs` of a Network.
        * Add CompleteAddOp() methods
      * Remove `AddOp(OpDesc&)` in net-op. All op are added by OperatorPtr.
      * Rewrite unit test for truly tested what networks do.
      * optimise operator_test
      45ce1649
  10. 15 7月, 2017 1 次提交
    • Y
      Python Generate OpCreation Methods by OpProto · 9e0c6800
      Yu Yang 提交于
      All OpCreation method are generated by
      `create_op_creation_methods::__bootstrap__` method, and stores in
      `op_creations` object and its methods.
      
      There are three parts to implement this feature.
      
      1. Get all registered `OpProto` from C++ side. It is implemented in
      `get_all_op_protos` method.
      1. Create a function to convert `kwargs` to `OpDesc` base on each op's
      `OpProto`. The `OpDescCreationMethod` class.
      1. Convert `OpProto` to `docstring` by `get_docstring_from_op_proto`
      method.
      
      All three methods are unit tested. The `__bootstrap__` just combines
      them together and create a method in runtime.
      
      For details, please reference the doc string in
      `create_op_creation_methods.py` and the unit test
      `test_op_creation_methods.py`.
      9e0c6800
  11. 14 7月, 2017 2 次提交
  12. 13 7月, 2017 2 次提交
  13. 12 7月, 2017 2 次提交
    • Y
      Add OperatorWithKernel class · 0ff81920
      Yu Yang 提交于
      * User can register OpKernel to its Ops. The OpKernelMap saved in
        OperatorWithKernel. Each Op which inherits OperatorWithKernel will
        use `OpKernel::Compute` instead of Run.
      0ff81920
    • Q
      add operator base (#2725) · a2e5f652
      Qiao Longfei 提交于
      Add OperatorBase.
      
      issue: https://github.com/PaddlePaddle/Paddle/issues/2790
      
      Paddle design the Operator with Kernel. OperatorBase has no type and device information when create, One operator can have multiple kernels, Operator will choose a kernel to run according to context. The kernel should be bind to Operator before or during Operator running.
      a2e5f652