* is_training to is_test in dropout op
* handle dropout and batch_norm operator when prune pdesc in testing mode
* handle dropout and batch_norm operator when prune pdesc in testing mode
* add get_inference_program method
* fix dropout op
* fix ci
* test data after each batch training
* refine code
* refine test_book3
* fix ci
* follow comments
* first commit
* Python API for while op
* Python Unittest for simple while_op forward
* fix out to be list
* Fix UT
* VarType
* Fix several bugs
* Fix bug
* Fix bug
* Fix Bug
* Fix bug
* Fix unittest
* Remove debug log
* Add comments
* add PADDLE_ENFORCE
* while_grad_op first commit
* Add `BlockDescBind::FindRecursiveOrCreateVar()` and fix bugs
* not sure how to setdim of while outputs
* push for test
* add executor vlog
* fix bug of while_op cond
* Several enhancement for code
1. Backward always infer shape & infer var type. Since there are RENAME
variables will be created when creating backward operator, but their
shape & var types are not inferenced.
2. Never use SomePtr-> directly, since every pointer could be nullptr if
it is a function return value. Add `detail::Ref` to cast pointer to
reference safely.
3. Enhance error message for backward.
4. Infer data type of variable in `sum` and `tensor_write`
* Fix bugs of while_op gradient
* Fix several bugs of while_op grad
* fix fill zeros like
* fix 3 >= 3
* fix place holder shouldn't be null
* fail on sum op
* Fix SumOp of TensorList
* clean up
* pass while test
* fix test_array_write_read
* pass sum op
* Support int/int64 for fill_constant_batch_size_like
* Fix compile
* Conditional Block Forward
* Assign Operator.
Out=X, when type in [LoDTensor/SelectedRows/LoDTensorArray]
* Stash
* Add Scope::Rename
it is useful in gradient phase of an operator with block
* ConditionalBlock Grad Done
* Add comments
* yapf format code
* Chage `IndicateDataType` to `GetKernelType`. Make it easier to
understand.
* Change `OpKernelKey` to `OpKernelType`
* Make operator developers can customize which kernel the operator will
use in runtime.
* Use stable_sort in lod_rank_table
It is easy to debug and test when use `stable_sort`and the time
complexity is not changed.
* Add LoDTensorArray
* Stash
* Better debug message for IsInitialized
* Stash
* Better debug message for IsInitialized
* Complete array read/write op unittests
* Add unittest, Gradient of array read/write
* Follow comments
* Use stable_sort in lod_rank_table
It is easy to debug and test when use `stable_sort`and the time
complexity is not changed.
* Add LoDTensorArray
* Stash
* Better debug message for IsInitialized
* Stash
* Better debug message for IsInitialized
* Complete array read/write op unittests
* add acc layer
* memory log level change from 3 to 10
* use gaussian random to init conv parameters
* use initializer
* fix import
* batch_norm use helper to create persistable var
* refine code
* train only 2 batches for test
* use g_program and g_init_program
* use XavierInitializer to init fc parameter
* Add LoDRankTable
LoD Rank Table stores the `level` of `lod` which is ordered by sequence
length in descending order. It is useful when implement dynamic RNN and
is shared by dynamic RNN memory, dynamic RNN slice input and dynamic
RNN slice output operators.
* Add InferVarType
* Init commit
* Make executor use ProgramDescBind
* Change Attribute from BlockDesc to BlockDescBind
* Since we will get the program desc in RNN, just BlockDesc is not
enough.
* Add DeviceContext to Executor API
* Rewrite RNN
* Pass Python
* AddBiasOp does not care num_flatten_dims
* Stash
* Fix MacOS Compile
* Pass RNN forward
* add python test
* refactor test
* Make compile pass
* add gradopmaker
* First draft done
* Polish code
* add grad op maker and grad infershape
* Polish code
* Fix backward.cc bug
* Fix infershape
* Rename function
* add backward test
* simplify recurrent test
* Update
* Pass unittest
* Add comments & refine test
* Add comments
* refactor test
* Complete Unittest
* fix StepScopes enforce
* Remove unused unittest
* no type error
* Update
* Make RNN Pass unittest
* Init commit
* Make executor use ProgramDescBind
* Change Attribute from BlockDesc to BlockDescBind
* Since we will get the program desc in RNN, just BlockDesc is not
enough.
* add batch_norm_layer
* add img_conv_group layer and test
* add check to Tensor.type()
* forward can run
* with backward
* change label data time from int32 to int64
* refine code
* follow comment
* add sparse support for sum op
* typo fix
* fix gpu build error
* fix unittest error
* typo fix
* infer var type and shape in op_test
* follow comments
* fix build error
* bypass some unittests depend on NetOp
* Simplize Gradient Check
* Stash
* Extract apply_backward_pass to backward.py
Rename apply_backward_pass to append_backward_ops
* Use graph API to check gradient
* Fix ci
* Fix CI
* Fix backward for double precision
* Stash
* Fix CI
* Fix ci
* Ignore GRU test
* Ignore xe op
* Fix CI
* Fix softmax with xe gradient
The correct equation should be IG = OG * (d_softmax_with_xe())
* Fix typo
* Fix merge error
* Disable LRN
* "add model format design doc"
* "add restore function"
* "add parse protobuf"
* "move necessary information to saver.proto"
* "format code"
* "add gpu option"
* "add lod info"
* "add saveop python test wrapper"
* "checkpoint reuse save operator"
* "rewrite model format design doc"
* "async support needed"
* "fix run once"
* "fix doc based on comments"
* "refine based on comments"
* "fix based comments"
* "remove persistable flag from framework.proto"
* "add IndicateDataType to restore op"
* "add save test"
* "modify save restore code"
* "modified the restore logic"
* rm checkpoint_op.cc
* rm test_checkpoint_op.py
* "get inputs outputs name from execution context"
* Saving each variable to a independent file
* Fix bugs
* Rewrite save_restore_op_test with new Python framework
* Move `SaveOp` and `RestoreOp` from OpWithKernel to OpBase
* Refine unit test of SaveOp and RestoreOp
* fix compile errorwq
* Implement FC layer with helper
* Update LayerHelper
* Add debug string for Python ProtoBuf
and Rename `Sync` to `Flush`
* Add check of ProtoBuf initialization
* Layer wrapper for FC
* Fix unittest
* Fix CI
* Add code generator
* AttributeChecker Better error log and speicalize bool
Since lots of types can be cast to bool
* Complete mlp, fit_a_line
* Expose get global scope
* Make global scope not thread-safe
1. It is no need to make global scope thread-safe, since it will be
invoked in Python main thread.
2. Do not free the global scope when C++ exit. Let the OS free memories,
otherwise, we need to handle the destroy dependencies.
See
https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables
* Fix
* Implementation of simple conv_2d layer
* Stash
* Remove private data members in OpRegister
* Fix bugs
* Stash
* Expose FeedFetchList as VarType
* Change ProgramDesc not a global variable
* Polish code style
* Stash
* Correct implement BlockDesc destructor
* Correct implement BlockDesc destructor
* Unify program as parameter name
* Fix bugs
* Add unittest
* Fix unit test error
* Remove unused functions
* Add clone for Python Program
* Working on executor
* Stash
* Add glog as dependencies of ops
* Use VLOG to logging some information is helpful when we debug Paddle
* Expose VarDesc::persistable to Python
* Test executor
* Complete unittest
* Polish code
* Fix merge error
* Follow comment
* Polish Python Code
* Implement FC layer with helper
* Update LayerHelper
* Add debug string for Python ProtoBuf
and Rename `Sync` to `Flush`
* Add check of ProtoBuf initialization
* Layer wrapper for FC
* Fix unittest
* Fix CI
* Add code generator
* AttributeChecker Better error log and speicalize bool
Since lots of types can be cast to bool
* Complete mlp, fit_a_line
* Implementation of simple conv_2d layer
* Fix bugs
* Change ProgramDesc not a global variable
* Polish code style
* Stash
* Correct implement BlockDesc destructor
* Correct implement BlockDesc destructor
* Unify program as parameter name
* Fix bugs
* Add unittest
* Fix unit test error
* Remove unused functions
* Add clone for Python Program
* Compare OpDescBind directly
* Implement FC layer with helper
* Update LayerHelper
* Add debug string for Python ProtoBuf
and Rename `Sync` to `Flush`
* Add check of ProtoBuf initialization
* Layer wrapper for FC
* Fix unittest
* Fix CI
* Add code generator
* AttributeChecker Better error log and speicalize bool
Since lots of types can be cast to bool
* Complete mlp, fit_a_line
* Implementation of simple conv_2d layer
* Fix bugs
* Correct implement BlockDesc destructor
* Fix bugs
* Fix unit test error
* Follow comments
* init parameter base class
* optimize the Comments of optimizer
* basic implimentation of optimizer
* add test_optimizer
* add no_grad_set to interface
* update optimizer.py
* python code can run
* fix some problem
* add sync_with_cpp to Python Program and Block
* sync vars and ops in block from cpp
* optimize code and add some comment
* add more check for sync
* update optimizer with return value of Backward
* rm unused code
* infer shape when create gradient vairiable
* update test_optimizer
* update test_program.py
* update backward test
* follow comment
* Make global scope not thread-safe
1. It is no need to make global scope thread-safe, since it will be
invoked in Python main thread.
2. Do not free the global scope when C++ exit. Let the OS free memories,
otherwise, we need to handle the destroy dependencies.
See
https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables
* Revert "FIX: Release CPU/GPU memory via deleter"
This reverts commit 8f80f5bc79.
* Feed/Fetch op just plain operator, not a OpWithKernel
* Do not register OpInfoMaker since Feed/Fetch will never be
configured by users
* Feed/Fetch op has empty gradient
* Feed/Fetch op do not hard code `feed_variable`, `fetch_variable` as
its input and output, make it as a plain Operator input/output
* add target to Backward, generate var in block when call backward
* modify backward_test
* fix executor_test
* set var desc default type to LOD_TENSOR
* update backward_test
* insert loss in the top level of backward
* create grad vars for all blocks in current program
* optimize code
* update test_program.py
* only create var for newly create blocks when backward