1. 19 7月, 2017 2 次提交
    • F
      rename a macro · 94a6b1fa
      fengjiayi 提交于
      94a6b1fa
    • 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
  2. 18 7月, 2017 5 次提交
  3. 17 7月, 2017 3 次提交
  4. 16 7月, 2017 2 次提交
    • 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
    • Q
      add ADD_OP_CPU to enable add op with only cpu kernel (#2896) · afa99d9a
      Qiao Longfei 提交于
      * add ADD_OP_CPU to enable add op with only cpu kernel
      afa99d9a
  5. 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
  6. 14 7月, 2017 3 次提交
    • Q
      Optimize ptr (#2851) · 58f3de95
      Qiao Longfei 提交于
      * use OperatorPtr = std::shared_ptr<OperatorBase>;
      * use ScopePtr = std::share_ptr<Scope>;
      58f3de95
    • Y
      Let OpProto support multiple and temporary (#2860) · 2462d0c5
      Yu Yang 提交于
      * Let OpProto support multiple and temporary
      
      * Each input/output of Paddle's Op could be a list. Add multiple mark to
        OpProto. Also add a `input_format`/`output_format` attribute if that
        Op has multiple input or output. The format of that attribute please
        reference the comments in `op_proto.proto`
      * Add temporary mark, because some output of an Op is not used by user
        but used by other op for faster computation. Explicitly mark which
        output is temporary could let future memory/computation optimization.
      * Add generated field to AttrProto.
      
      * Add `AddInputs`/`AddOutputs` function
      
      * It is more readable to invoke `AddInputs` not
        `AddInput(multiple=true)`.
      2462d0c5
    • Y
      Init commit · cd5113c1
      Yu Yang 提交于
      cd5113c1
  7. 13 7月, 2017 3 次提交
    • Y
      Follow comments · 79b70c2d
      Yu Yang 提交于
      * Convert `op` --> `operators`
      * Remove AddType in OpProtoMaker, because type is part of registry.
      * Rename CPU_OR_GPU --> DEVICE_TYPE in registry macro.
      79b70c2d
    • Y
      Add a sample op, `add_op` · a0aaafe9
      Yu Yang 提交于
      * Refine register methods, make Op can get rid of whole-archieve
      * `USE_OP` before a op is used.
      * Add unittest for add_op.
      a0aaafe9
    • Q
      Add Init to OperatorBase (#2838) · 728665d7
      Qiao Longfei 提交于
      728665d7
  8. 12 7月, 2017 2 次提交
  9. 11 7月, 2017 1 次提交
    • Y
      Move static variable defined in .cc (#2782) · 267f9a2c
      Yu Yang 提交于
      * Move static variable defined in .cc
      
      We cannot define static variable in .h, because it will be multi-defined
      errors.
      
      Also fix some cpp syntax, like:
      
      * Prefer to use algorithm not manually for-loop, to make code more
        readable.
      * Remove unused `()`.
      * Enforce take a bool. It is no need `xxx==true`.
      * Use range-based for-loop iterator from op_desc.attrs
      
      * Fix a protential static variable init order error
      267f9a2c
  10. 07 7月, 2017 1 次提交
    • F
      [draft] add registry for Op, OpProto and OpAttrChecker (#2739) · 1d2ef1db
      fengjiayi 提交于
      * init op_registry.h
      
      * dev op_registry.h
      
      * add 'attr_checker.h', which is a draft of op attribute checker.
      
      * rename some macro parameters
      
      * 1. Use `Attribute` and `AttributeMap` instead of `OpDesc`. `AttributeMap` is a unordered_map of <string, Attribute>, and `Attribute` is a boost::variant object to hold multiple types of attribute value.
      2. Use `PADDLE_ENFORCE` to print checkers' fail message.
      3. Abstract default value operations to a new function: `DefaultChecker`.
      
      * rename DefaultChecker to DefaultValueSetter
      
      ZZ
      
      * Finish op_registry
      
      1. Complete the development of interfaces between OpRegistry and
      Protobuf.
      2. Add unit test for op_registry.h
      
      * Add demo and test of custome checker
      
      * fix merge conflict
      1d2ef1db