|
|
|
@ -54,6 +54,31 @@ paddle_error paddle_gradient_machine_create_for_inference(
|
|
|
|
|
return kPD_NO_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
paddle_error paddle_gradient_machine_create_for_inference_with_parameters(
|
|
|
|
|
paddle_gradient_machine* machine, void* mergedModel, uint64_t size) {
|
|
|
|
|
if (mergedModel == nullptr) return kPD_NULLPTR;
|
|
|
|
|
std::istringstream is(std::string(static_cast<char*>(mergedModel), size));
|
|
|
|
|
int64_t modelConfigSize = 0;
|
|
|
|
|
is.read((char*)(&modelConfigSize), sizeof(modelConfigSize));
|
|
|
|
|
std::string modelConfigProtobuf;
|
|
|
|
|
modelConfigProtobuf.resize(modelConfigSize);
|
|
|
|
|
is.read(&modelConfigProtobuf[0], modelConfigSize);
|
|
|
|
|
paddle::TrainerConfig config;
|
|
|
|
|
if (!config.ParseFromString(modelConfigProtobuf) || !config.IsInitialized()) {
|
|
|
|
|
return kPD_PROTOBUF_ERROR;
|
|
|
|
|
}
|
|
|
|
|
auto ptr = new paddle::capi::CGradientMachine();
|
|
|
|
|
ptr->machine.reset(paddle::GradientMachine::create(
|
|
|
|
|
config.model_config(), CREATE_MODE_TESTING, {paddle::PARAMETER_VALUE}));
|
|
|
|
|
std::vector<paddle::ParameterPtr>& parameters = ptr->machine->getParameters();
|
|
|
|
|
for (auto& para : parameters) {
|
|
|
|
|
para->load(is);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*machine = ptr;
|
|
|
|
|
return kPD_NO_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
paddle_error paddle_gradient_machine_destroy(paddle_gradient_machine machine) {
|
|
|
|
|
delete cast(machine);
|
|
|
|
|
return kPD_NO_ERROR;
|
|
|
|
|