* 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
* 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 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
* 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
* It is duplicated with `dim_`. We can use `dim_` to calculate `numel`
everytime. It does not cost too much.
* `numel` is not initialized by constructor. Also, `numel` is hard to
synchronize with `dim_`.
So just remove it.