1. 08 8月, 2017 2 次提交
    • Q
      add gradient test framework (#3226) · e31a469e
      Qiao Longfei 提交于
      * init grad op checker
      
      * can run
      
      * add GradeChecker class
      
      * use get_numeric_gradient
      
      * refine code
      
      * add softmax and cross entropy auto grad test
      
      * use close to judge op_grad and numeric_grad
      
      * add cpu and gpu compare
      
      * add comments
      
      * add support_gpu
      
      * fix allclose
      
      * fix name error and symplify code
      
      * optimize gradient checker
      
      * add test_cross_entropy_op
      
      * update gradient_checker.py
      
      * optimize code
      
      * use random.uniform instead of random.random
      
      * fix type bug
      
      * optimize check_grad
      
      * put SupportGPU into OperatorBase
      
      * typo
      e31a469e
    • Y
      fix some enforce (#3301) · 2af35002
      Yan Chunwei 提交于
      * fix some enforce
      
      * remove compatible_type to avoid compile error
      
      * remove shared_ptr
      
      * fix tensor error msg
      2af35002
  2. 07 8月, 2017 2 次提交
  3. 04 8月, 2017 4 次提交
  4. 03 8月, 2017 1 次提交
    • Q
      Softmax grad op (#3164) · d953611e
      Qiao Longfei 提交于
      * init softmax grad op
      
      * add compute code
      
      * export Backward to python
      
      * update test ,export op.type to python
      
      * update python test, fix compute bug
      
      * update unit test
      
      * use eigen
      
      * optimize eigen code
      
      * add gpu test
      
      * register softmax_grad GPU kernel and fix test bug
      
      * typo
      
      * follow comments
      d953611e
  5. 02 8月, 2017 1 次提交
  6. 01 8月, 2017 3 次提交
    • Q
      add check in OPeratorContext Input/Output · 3b58574b
      qiaolongfei 提交于
      3b58574b
    • 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
  7. 31 7月, 2017 1 次提交
  8. 28 7月, 2017 1 次提交
  9. 27 7月, 2017 2 次提交
  10. 26 7月, 2017 3 次提交
  11. 25 7月, 2017 1 次提交
  12. 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
  13. 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
  14. 18 7月, 2017 2 次提交
  15. 17 7月, 2017 4 次提交
  16. 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
  17. 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
  18. 14 7月, 2017 2 次提交
  19. 13 7月, 2017 2 次提交
  20. 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