diff --git a/paddle/capi/gradient_machine.cpp b/paddle/capi/gradient_machine.cpp index 629449bbd497a7444144c533ad079b3ae6b51438..482b51e8a8430863c3e13df2298f6979d3959461 100644 --- a/paddle/capi/gradient_machine.cpp +++ b/paddle/capi/gradient_machine.cpp @@ -64,12 +64,18 @@ paddle_error paddle_gradient_machine_create_for_inference_with_parameters( modelConfigProtobuf.resize(modelConfigSize); is.read(&modelConfigProtobuf[0], modelConfigSize); paddle::TrainerConfig config; + paddle::ModelConfig modelConfig; if (!config.ParseFromString(modelConfigProtobuf) || !config.IsInitialized()) { - return kPD_PROTOBUF_ERROR; + if (!modelConfig.ParseFromString(modelConfigProtobuf) || + !modelConfig.IsInitialized()) { + return kPD_PROTOBUF_ERROR; + } + } else { + modelConfig = config.model_config(); } auto ptr = new paddle::capi::CGradientMachine(); ptr->machine.reset(paddle::GradientMachine::create( - config.model_config(), CREATE_MODE_TESTING, {paddle::PARAMETER_VALUE})); + modelConfig, CREATE_MODE_TESTING, {paddle::PARAMETER_VALUE})); std::vector& parameters = ptr->machine->getParameters(); for (auto& para : parameters) { para->load(is); diff --git a/paddle/trainer/MergeModel.cpp b/paddle/trainer/MergeModel.cpp index 6c52eaf4494bb247324b29981d94d7e97e0f212a..a70673ffec8812d86b9a0c13f15ef0b378dcf3ce 100644 --- a/paddle/trainer/MergeModel.cpp +++ b/paddle/trainer/MergeModel.cpp @@ -20,6 +20,7 @@ limitations under the License. */ #include "paddle/utils/PythonUtil.h" DEFINE_string(model_dir, "", "Directory for separated model files"); +DEFINE_string(config_file, "", "Config file for the model"); DEFINE_string(model_file, "", "File for merged model file"); using namespace paddle; // NOLINT @@ -28,7 +29,8 @@ using namespace std; // NOLINT int main(int argc, char** argv) { initMain(argc, argv); initPython(argc, argv); - string confFile = TrainerConfigHelper::getConfigNameFromPath(FLAGS_model_dir); + + string confFile = FLAGS_config_file; #ifndef PADDLE_WITH_CUDA FLAGS_use_gpu = false; #endif diff --git a/proto/TrainerConfig.proto b/proto/TrainerConfig.proto index b7c2355159e66be0a1550d3c8fde9a15346ff7e4..aa4e5f4ca09fc9f2f7c3da3f0a476e149f78e133 100644 --- a/proto/TrainerConfig.proto +++ b/proto/TrainerConfig.proto @@ -19,7 +19,7 @@ import "ModelConfig.proto"; package paddle; message OptimizationConfig { - required int32 batch_size = 3; + optional int32 batch_size = 3 [ default = 1 ]; required string algorithm = 4 [ default = "async_sgd" ]; optional int32 num_batches_per_send_parameter = 5 [ default = 1 ]; optional int32 num_batches_per_get_parameter = 6 [ default = 1 ];