diff --git a/paddle/fluid/train/custom_trainer/feed/scripts/create_programs.py b/paddle/fluid/train/custom_trainer/feed/scripts/create_programs.py index c28f8e312578c1ad4e997eaf08c7590ee3771739..d22e40b34595139a58289262cf800353b0059bcf 100644 --- a/paddle/fluid/train/custom_trainer/feed/scripts/create_programs.py +++ b/paddle/fluid/train/custom_trainer/feed/scripts/create_programs.py @@ -15,7 +15,9 @@ def print_help(this_name): print("Usage: {} [model_dir]\n".format(this_name)) print(" example: {} {}".format(this_name, os.path.join(dirname, 'example.py'))) -def inference(filename): + + +def inference_warpper(filename): """Build inference network(without loss and optimizer) Args: filename: path of file which defined real inference function @@ -24,11 +26,14 @@ def inference(filename): and Variable: ctr_output """ + with open(filename, 'r') as f: code = f.read() compiled = compile(code, filename, 'exec') - exec(compiled) - return inference() + + scope = dict() + exec(compiled, scope) + return scope['inference']() def main(argv): """Create programs @@ -40,7 +45,7 @@ def main(argv): exit(1) network_build_file = argv[1] - if len(argv) >= 2: + if len(argv) > 2: model_dir = argv[2] else: model_dir = './model' @@ -48,7 +53,7 @@ def main(argv): main_program = fluid.Program() startup_program = fluid.Program() with fluid.program_guard(main_program, startup_program): - inputs, ctr_output = inference(network_build_file) + inputs, ctr_output = inference_warpper(network_build_file) test_program = main_program.clone(for_test=True) diff --git a/paddle/fluid/train/custom_trainer/feed/unit_test/test_create_programs.cc b/paddle/fluid/train/custom_trainer/feed/unit_test/test_create_programs.cc index 1884f43e9f40fbe3fd6d7ecad794ef74fb7abf84..4f03977d8fa5690357d0a270f2160fc67cbe0eec 100644 --- a/paddle/fluid/train/custom_trainer/feed/unit_test/test_create_programs.cc +++ b/paddle/fluid/train/custom_trainer/feed/unit_test/test_create_programs.cc @@ -84,29 +84,29 @@ TEST_F(CreateProgramsTest, example_network) { ASSERT_EQ(-1, input_shape[0]); ASSERT_EQ(4488, input_shape[1]); - auto input_var = executor->mutable_var<::paddle::framework::LoDTensor>(input_name); - auto label_var = executor->mutable_var<::paddle::framework::LoDTensor>(label_name); + auto input_var = executor->mutable_var<::paddle::framework::LoDTensor>(input_name); + auto label_var = executor->mutable_var<::paddle::framework::LoDTensor>(label_name); ASSERT_NE(nullptr, input_var); ASSERT_NE(nullptr, label_var); - input_var->Resize({1, input_shape[1]}); - auto input_data = input_var->mutable_data(context_ptr->cpu_place); + input_var->Resize({1, input_shape[1]}); + auto input_data = input_var->mutable_data(context_ptr->cpu_place); ASSERT_NE(nullptr, input_data); for (int i = 0; i < input_shape[1]; ++i) { input_data[i] = 0.1; } label_var->Resize({1, 1}); - auto label_data = label_var->mutable_data(context_ptr->cpu_place); + auto label_data = label_var->mutable_data(context_ptr->cpu_place); ASSERT_NE(nullptr, label_data); label_data[0] = 0.5; ASSERT_EQ(0, executor->run()); - auto loss_var = executor->var<::paddle::framework::LoDTensor>(loss_name); + auto loss_var = executor->var<::paddle::framework::LoDTensor>(loss_name); auto loss = loss_var.data()[0]; - auto ctr_output_var = executor->var<::paddle::framework::LoDTensor>(ctr_output_name); + auto ctr_output_var = executor->var<::paddle::framework::LoDTensor>(ctr_output_name); auto ctr_output = ctr_output_var.data()[0]; std::cout << "loss: " << loss << std::endl; diff --git a/paddle/fluid/train/custom_trainer/feed/unit_test/test_executor.cc b/paddle/fluid/train/custom_trainer/feed/unit_test/test_executor.cc index e1cb5fbfc0661bbdce20c2bca350a1df397a6a42..34cd43642598217187ba9aaec841848a79d332e3 100644 --- a/paddle/fluid/train/custom_trainer/feed/unit_test/test_executor.cc +++ b/paddle/fluid/train/custom_trainer/feed/unit_test/test_executor.cc @@ -106,12 +106,12 @@ TEST_F(SimpleExecutorTest, run) { auto config = YAML::Load(string::format_string("{thread_num: 2, startup_program: %s, main_program: %s}", startup_program_path, main_program_path)); ASSERT_EQ(0, executor->initialize(config, context_ptr)); - auto x_var = executor->mutable_var<::paddle::framework::LoDTensor>("x"); + auto x_var = executor->mutable_var<::paddle::framework::LoDTensor>("x"); ASSERT_NE(nullptr, x_var); int x_len = 10; - x_var->Resize({1, x_len}); - auto x_data = x_var->mutable_data(context_ptr->cpu_place); + x_var->Resize({1, x_len}); + auto x_data = x_var->mutable_data(context_ptr->cpu_place); ASSERT_NE(nullptr, x_data); std::cout << "x: "; for (int i = 0; i < x_len; ++i) { @@ -122,7 +122,7 @@ TEST_F(SimpleExecutorTest, run) { ASSERT_EQ(0, executor->run()); - auto mean_var = executor->var<::paddle::framework::LoDTensor>("mean"); + auto mean_var = executor->var<::paddle::framework::LoDTensor>("mean"); auto mean = mean_var.data()[0]; std::cout << "mean: " << mean << std::endl; ASSERT_NEAR(4.5, mean, 1e-9);