From a59c3b73bd4695e3b8a7110cac18765e210d9bb3 Mon Sep 17 00:00:00 2001 From: "Yang Yang(Tony)" Date: Wed, 13 Jun 2018 17:01:51 -0700 Subject: [PATCH] change dynamic graph folder (#11451) * change dynamic to tape * update readme link --- paddle/contrib/CMakeLists.txt | 2 +- .../contrib/{dynamic => tape}/CMakeLists.txt | 0 paddle/contrib/{dynamic => tape}/README.md | 18 ++++++++++++------ .../{dynamic => tape}/computation_graph.png | Bin paddle/contrib/{dynamic => tape}/function.h | 6 +++--- paddle/contrib/{dynamic => tape}/tape.cc | 4 ++-- paddle/contrib/{dynamic => tape}/tape.h | 4 ++-- paddle/contrib/{dynamic => tape}/test_tape.cc | 4 ++-- paddle/contrib/{dynamic => tape}/variable.cc | 4 ++-- paddle/contrib/{dynamic => tape}/variable.h | 2 +- 10 files changed, 25 insertions(+), 19 deletions(-) rename paddle/contrib/{dynamic => tape}/CMakeLists.txt (100%) rename paddle/contrib/{dynamic => tape}/README.md (90%) rename paddle/contrib/{dynamic => tape}/computation_graph.png (100%) rename paddle/contrib/{dynamic => tape}/function.h (97%) rename paddle/contrib/{dynamic => tape}/tape.cc (99%) rename paddle/contrib/{dynamic => tape}/tape.h (96%) rename paddle/contrib/{dynamic => tape}/test_tape.cc (95%) rename paddle/contrib/{dynamic => tape}/variable.cc (94%) rename paddle/contrib/{dynamic => tape}/variable.h (99%) diff --git a/paddle/contrib/CMakeLists.txt b/paddle/contrib/CMakeLists.txt index 75d01705679..70e3a0583d8 100644 --- a/paddle/contrib/CMakeLists.txt +++ b/paddle/contrib/CMakeLists.txt @@ -14,4 +14,4 @@ # add_subdirectory(inference) -add_subdirectory(dynamic) +add_subdirectory(tape) diff --git a/paddle/contrib/dynamic/CMakeLists.txt b/paddle/contrib/tape/CMakeLists.txt similarity index 100% rename from paddle/contrib/dynamic/CMakeLists.txt rename to paddle/contrib/tape/CMakeLists.txt diff --git a/paddle/contrib/dynamic/README.md b/paddle/contrib/tape/README.md similarity index 90% rename from paddle/contrib/dynamic/README.md rename to paddle/contrib/tape/README.md index a056877093a..16c22a45d59 100644 --- a/paddle/contrib/dynamic/README.md +++ b/paddle/contrib/tape/README.md @@ -1,6 +1,11 @@ # Dynamic Graph on Fluid -PaddlePaddle Fluid is targeting the autodiff without tape, which, however, is very challenging and we are still way from there. DyNet and PyTorch provide a good design idea, the *tape*, that significantly eases the challenge. Also, DyNet provides a C++ API that is as convenient as Python but with higher efficiency and could conveniently integrate with industrial/production systems. This package, `tape`, combines the good of +PaddlePaddle Fluid is targeting the autodiff without tape, which, however, is very +challenging and we are still way from there. DyNet and PyTorch provide a good design +idea, the *tape*, that significantly eases the challenge. Also, DyNet provides +a C++ API that is as convenient as Python but with higher efficiency and could +conveniently integrate with industrial/production systems. This package, `tape`, +combines the good of 1. tape from PyTorch and DyNet 2. C++ API and core from DyNet @@ -8,8 +13,8 @@ PaddlePaddle Fluid is targeting the autodiff without tape, which, however, is ve ## Overview -We can implement Dynet-like Tape(See this survey) by wrapping Paddle Fluid's `Operator` -and `Variable`. +We can implement Dynet-like Tape(See this [survey](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/survey/dynamic_graph.md)) +by wrapping Paddle Fluid's `Operator` and `Variable`. The user API is straight forward since @@ -121,13 +126,14 @@ paddle::tape::SGD sgd(0.001); // Data Feeder paddle::tape::Fill data_feeder(...); VariableHandle input(new paddle::tape::Variable("input")); +VariableHandle label(new paddle::tape::Variable("label")); for (int i = 0; i < 2; ++i) { reset_global_tape(); - data_feeder(input); + data_feeder(input, label); - auto loss = mean(linear2(linear1(input))); // compile time InferShape & InferVarType + auto loss = softmax(linear2(linear1(input)), label); // compile time InferShape & InferVarType LOG(INFO) << loss.value(); // Run forward up to loss // Run backward, store gradient of w at w->Grad() @@ -209,7 +215,7 @@ digraph G { } -![Image](https://github.com/tonyyang-svail/Paddle/blob/cpp_tap/paddle/contrib/dynamic/computation_graph.png) +![Image](https://github.com/tonyyang-svail/Paddle/blob/cpp_tap/paddle/contrib/tape/computation_graph.png) ## Code Reuse diff --git a/paddle/contrib/dynamic/computation_graph.png b/paddle/contrib/tape/computation_graph.png similarity index 100% rename from paddle/contrib/dynamic/computation_graph.png rename to paddle/contrib/tape/computation_graph.png diff --git a/paddle/contrib/dynamic/function.h b/paddle/contrib/tape/function.h similarity index 97% rename from paddle/contrib/dynamic/function.h rename to paddle/contrib/tape/function.h index 6434beebf4a..0584f4ec8aa 100644 --- a/paddle/contrib/dynamic/function.h +++ b/paddle/contrib/tape/function.h @@ -16,12 +16,12 @@ #include -#include "paddle/contrib/dynamic/tape.h" -#include "paddle/contrib/dynamic/variable.h" +#include "paddle/contrib/tape/tape.h" +#include "paddle/contrib/tape/variable.h" #include "paddle/fluid/framework/type_defs.h" namespace paddle { -namespace dynamic { +namespace tape { class Function {}; diff --git a/paddle/contrib/dynamic/tape.cc b/paddle/contrib/tape/tape.cc similarity index 99% rename from paddle/contrib/dynamic/tape.cc rename to paddle/contrib/tape/tape.cc index fd24eabe9d0..531499b6fe0 100644 --- a/paddle/contrib/dynamic/tape.cc +++ b/paddle/contrib/tape/tape.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "paddle/contrib/dynamic/tape.h" +#include "paddle/contrib/tape/tape.h" #include #include @@ -29,7 +29,7 @@ #include "paddle/fluid/pybind/pybind.h" namespace paddle { -namespace dynamic { +namespace tape { // borrowed from // https://stackoverflow.com/questions/874134/find-if-string-ends-with-another-string-in-c diff --git a/paddle/contrib/dynamic/tape.h b/paddle/contrib/tape/tape.h similarity index 96% rename from paddle/contrib/dynamic/tape.h rename to paddle/contrib/tape/tape.h index 9467e9d5434..9938ce9a7f4 100644 --- a/paddle/contrib/dynamic/tape.h +++ b/paddle/contrib/tape/tape.h @@ -18,10 +18,10 @@ #include #include -#include "paddle/contrib/dynamic/variable.h" +#include "paddle/contrib/tape/variable.h" namespace paddle { -namespace dynamic { +namespace tape { using VariableHandleMap = std::map>; diff --git a/paddle/contrib/dynamic/test_tape.cc b/paddle/contrib/tape/test_tape.cc similarity index 95% rename from paddle/contrib/dynamic/test_tape.cc rename to paddle/contrib/tape/test_tape.cc index ad8ee8c7561..e9bfd21a718 100644 --- a/paddle/contrib/dynamic/test_tape.cc +++ b/paddle/contrib/tape/test_tape.cc @@ -13,9 +13,9 @@ // limitations under the License. #include "gtest/gtest.h" -#include "paddle/contrib/dynamic/function.h" +#include "paddle/contrib/tape/function.h" -using namespace paddle::dynamic; +using namespace paddle::tape; TEST(Tape, TestMLP) { LOG(INFO) << "TestMLP"; diff --git a/paddle/contrib/dynamic/variable.cc b/paddle/contrib/tape/variable.cc similarity index 94% rename from paddle/contrib/dynamic/variable.cc rename to paddle/contrib/tape/variable.cc index 8eede414f52..5ec16129095 100644 --- a/paddle/contrib/dynamic/variable.cc +++ b/paddle/contrib/tape/variable.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "paddle/contrib/dynamic/variable.h" +#include "paddle/contrib/tape/variable.h" namespace paddle { -namespace dynamic { +namespace tape { void Variable::InitializeVariable() { LOG(INFO) << "Initialzing " << desc_.Name() << " as " << desc_.GetType(); diff --git a/paddle/contrib/dynamic/variable.h b/paddle/contrib/tape/variable.h similarity index 99% rename from paddle/contrib/dynamic/variable.h rename to paddle/contrib/tape/variable.h index 55b5f1fda9a..7e63aa38a7a 100644 --- a/paddle/contrib/dynamic/variable.h +++ b/paddle/contrib/tape/variable.h @@ -20,7 +20,7 @@ #include "paddle/fluid/framework/variable.h" namespace paddle { -namespace dynamic { +namespace tape { class Variable; using VariableHandle = std::shared_ptr; -- GitLab