Я использую API-интерфейс tenorflow C ++ для вывода.Мне удалось создать автономную библиотеку тензорного потока, загрузить оптимизированный график и передать изображение.
Я могу напечатать тензор, используя следующий код:
// run the image through the model.
std::vector<Tensor> outputs;
Status run_status = session->Run({{input_layer, resized_tensor}}, {output_layer}, {}, &outputs);
if (!run_status.ok()) {
LOG(ERROR) << "Running model failed: " << run_status;
return -1;
}
std::cout << outputs[0].DebugString() << "\n";
, а затемЯ получаю следующий вывод:
Tensor<type: float shape: [1,480,720,3] values: [[[58.4225044 79.0690613 94.4875641]]]...>
но после добавления этой строки:
cv::Mat rotMatrix(outputs[0].dim_size(1), outputs[0].dim_size(2), CV_32FC1, outputs[0].flat<float>().data());
или этой строки:
float *p = outputs[0].flat<float>().data();
Я получаю следующую ошибку:
2019-06-26 14:19:29.040705: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
[libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:118] File already exists in database: google/protobuf/any.proto
[libprotobuf FATAL external/com_google_protobuf/src/google/protobuf/descriptor.cc:1367] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size):
terminate called after throwing an instance of 'google::protobuf::FatalException'
what(): CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size):
Aborted (core dumped)
Я попробовал это с использованием bazel, qmake и cmake и снова построил буфер протокола из источника, но без какой-либо помощи ..