From e3d4da2de3a442c85cecdde8fbc9407b54dba0f0 Mon Sep 17 00:00:00 2001 From: Yu Yang Date: Mon, 26 Dec 2016 14:15:29 +0800 Subject: [PATCH 1/3] Add sum cost to Arguments --- paddle/api/Arguments.cpp | 4 ++++ paddle/api/PaddleAPI.h | 2 ++ paddle/api/test/testArguments.py | 2 ++ 3 files changed, 8 insertions(+) diff --git a/paddle/api/Arguments.cpp b/paddle/api/Arguments.cpp index 0cafbd896e2d8..41beed38a8760 100644 --- a/paddle/api/Arguments.cpp +++ b/paddle/api/Arguments.cpp @@ -137,6 +137,10 @@ void Arguments::setSlotSequenceDim(size_t idx, IVector* vec) throw(RangeError) { a.cpuSequenceDims = m->cast(vec->getSharedPtr()); } +float Arguments::sumCosts() const { + return paddle::Argument::sumCosts(m->outputs); +} + int64_t Arguments::getBatchSize(size_t idx) const throw(RangeError) { auto& a = m->getArg(idx); return a.getBatchSize(); diff --git a/paddle/api/PaddleAPI.h b/paddle/api/PaddleAPI.h index 7521ff4c6c654..155e3e3afe6d9 100644 --- a/paddle/api/PaddleAPI.h +++ b/paddle/api/PaddleAPI.h @@ -454,6 +454,8 @@ class Arguments { IVector* vec) throw(RangeError); void setSlotSequenceDim(size_t idx, IVector* vec) throw(RangeError); + float sumCosts() const; + private: static Arguments* createByPaddleArgumentVector(void* ptr); void* getInternalArgumentsPtr() const; diff --git a/paddle/api/test/testArguments.py b/paddle/api/test/testArguments.py index 8cabecd242fb4..a04a805d7a64e 100644 --- a/paddle/api/test/testArguments.py +++ b/paddle/api/test/testArguments.py @@ -22,6 +22,8 @@ def test_load_arguments(self): args = swig_paddle.Arguments.createArguments(1) args.setSlotValue(0, m) + self.assertAlmostEqual(27.0, args.sumCosts()) + mat = args.getSlotValue(0) assert isinstance(mat, swig_paddle.Matrix) np_mat = mat.toNumpyMatInplace() From 8b833d5a8ada43ba8b049665d5c6161eeb0c5d65 Mon Sep 17 00:00:00 2001 From: Yu Yang Date: Mon, 26 Dec 2016 16:18:22 +0800 Subject: [PATCH 2/3] Add load/save method for Parameter --- paddle/api/PaddleAPI.h | 4 ++++ paddle/api/Parameter.cpp | 8 ++++++++ paddle/api/test/.gitignore | 6 ++++++ paddle/api/test/testGradientMachine.py | 4 ++++ 4 files changed, 22 insertions(+) create mode 100644 paddle/api/test/.gitignore diff --git a/paddle/api/PaddleAPI.h b/paddle/api/PaddleAPI.h index 155e3e3afe6d9..bc1b22e187fc2 100644 --- a/paddle/api/PaddleAPI.h +++ b/paddle/api/PaddleAPI.h @@ -551,6 +551,10 @@ class Parameter { ParameterConfig* getConfig(); void setValueUpdated(); + bool save(const std::string& filename) const; + + bool load(const std::string& filename) const; + private: static Parameter* createFromRawPtr(void* ptr); static Parameter* createFromSharedPtr(void* ptr); diff --git a/paddle/api/Parameter.cpp b/paddle/api/Parameter.cpp index 4eed00a84a695..9cfa2e35f5569 100644 --- a/paddle/api/Parameter.cpp +++ b/paddle/api/Parameter.cpp @@ -70,3 +70,11 @@ ParameterConfig* Parameter::getConfig() { size_t Parameter::getID() const { return m->getPtr()->getID(); } void Parameter::setValueUpdated() { m->getPtr()->setValueUpdated(); } + +bool Parameter::save(const std::string& filename) const { + return m->getPtr()->save(filename); +} + +bool Parameter::load(const std::string& filename) const { + return m->getPtr()->load(filename); +} diff --git a/paddle/api/test/.gitignore b/paddle/api/test/.gitignore new file mode 100644 index 0000000000000..ef37ef416791c --- /dev/null +++ b/paddle/api/test/.gitignore @@ -0,0 +1,6 @@ +___fc_layer_0__.w0 +___fc_layer_0__.wbias +_hidden1.w0 +_hidden1.wbias +_hidden2.w0 +_hidden2.wbias diff --git a/paddle/api/test/testGradientMachine.py b/paddle/api/test/testGradientMachine.py index b81eafa9673ca..4b705f66eccd2 100644 --- a/paddle/api/test/testGradientMachine.py +++ b/paddle/api/test/testGradientMachine.py @@ -45,6 +45,7 @@ def test_create_gradient_machine(self): assert isinstance(val, swig_paddle.Vector) arr = numpy.full((len(val), ), 0.1, dtype="float32") val.copyFromNumpyArray(arr) + self.assertTrue(param.save(param.getName())) param_config = param.getConfig().toProto() assert isinstance(param_config, paddle.proto.ParameterConfig_pb2.ParameterConfig) @@ -92,6 +93,9 @@ def backward_callback(param_): self.assertTrue(self.isCalled) + for param in machine.getParameters(): + self.assertTrue(param.load(param.getName())) + def test_train_one_pass(self): conf_file_path = './testTrainConfig.py' trainer_config = swig_paddle.TrainerConfig.createFromTrainerConfigFile( From 343d9973cac9a7054a74ff66bfacebc33e214a55 Mon Sep 17 00:00:00 2001 From: Yu Yang Date: Tue, 27 Dec 2016 11:07:41 +0800 Subject: [PATCH 3/3] Simplify gitignore for api/test --- paddle/api/test/.gitignore | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/paddle/api/test/.gitignore b/paddle/api/test/.gitignore index ef37ef416791c..b7948824a1eab 100644 --- a/paddle/api/test/.gitignore +++ b/paddle/api/test/.gitignore @@ -1,6 +1,2 @@ -___fc_layer_0__.w0 -___fc_layer_0__.wbias -_hidden1.w0 -_hidden1.wbias -_hidden2.w0 -_hidden2.wbias +*.w0 +*.wbias