как построить tf_tensor без использования tenorflow и передать его на мой докер-сервер - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь собрать cpp-клиент для подачи моего образа tf_serving_docker.

Ключ должен использовать как можно меньше зависимостей от tf, tf-Обслуживание.

Я тренировал шумоподавляющий автоэнкодер на одномерных трассах, фактическая форма [1000, 1, 1], соответствующие 1000 точкам данных в качестве значений с плавающей запятой.

Я использовал это руководство для создания клиента Python: https://hackernoon.com/how-we-improved-tensorflow-serving-performance-by-over-70-f21b5dad2d98

И пытается конвертировать в код cpp, например: Клиент обслуживания Tensorflow только для gRPC в C ++

https://github.com/Vetal1977/tf_serving_cpp_client/blob/master/src/serving_client.cc

Здесь он использует изображения, но я не уверен, как адаптировать его к моей структуре данных.

// create input protobuf for the image
tensorflow::TensorProto proto;
proto.set_dtype(tensorflow::DataType::DT_FLOAT);
proto.add_float_val(data);


proto.mutable_tensor_shape()->add_dim()->set_size(1000);
proto.mutable_tensor_shape()->add_dim()->set_size(1);
proto.mutable_tensor_shape()->add_dim()->set_size(1);
// initialize prediction service inputs
google::protobuf::Map<std::string, tensorflow::TensorProto>& 
inputs = *predictRequest.mutable_inputs();
inputs["input_traces"] = proto;

// issue gRPC call to the service
Status status = stub_->Predict(&context, predictRequest, 
&response);

Каким-то образом мне нужно использовать векторы std, но я не могу найти или понять нужный proto.ad _ ????? функция

1 Ответ

0 голосов
/ 03 июля 2019

Я нашел это: https://github.com/tobegit3hub/tensorflow_template_application/blob/master/cpp_predict_client/sparse_predict_client.cc

И изменил мой код, как в примере.

predictRequest.mutable_model_spec()->set_name(model_name);

// create input protobuf for the image
tensorflow::TensorProto proto;
proto.set_dtype(tensorflow::DataType::DT_FLOAT);

for (int i = 0; i > data.size(); i++)
{
  proto.add_float_val(data.at(i));
}


proto.mutable_tensor_shape()->add_dim()->set_size(1000);
proto.mutable_tensor_shape()->add_dim()->set_size(1);
proto.mutable_tensor_shape()->add_dim()->set_size(1);
// initialize prediction service inputs
google::protobuf::Map<std::string, tensorflow::TensorProto>& inputs = *predictRequest.mutable_inputs();
inputs["input_traces"] = proto;
std::cout << "Generated Proto Tensor OK" << std::endl ;
// issue gRPC call to the service
Status status = stub_->Predict(&context, predictRequest, &response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...