我试图使用cpp tflite API来查询开发板上的模型。该代码是用usb棒进行测试的,工作正常,但是,在开发板上,我在这一行中得到了一个错误:
model_interpreter_ = coral::BuildEdgeTpuInterpreter(*model_, this->edgetpu_context_.get());这是一个错误:
INFO: Initialized TensorFlow Lite runtime.
ERROR: Failed to retrieve TPU context.
ERROR: Node number 0 (edgetpu-custom-op) failed to prepare.使用python可以使用相同的模型。
开发板上是否支持tflite cpp API?
在开发板上,我有最新的版本(12-1),这就是我构建tflite lib时所做的工作:
编辑:i能够在开发板上从tensorflow分支v2.0构建tflite,并更新为针对本地构建的库链接,仍然得到相同的错误.
编辑2: i能够用tflite编译的tf-r1.15复制相同的beaviour。此外,我还尝试添加一个可用tpus的num打印,这是由@Nam建议的。下面是一个代码片段:
cout << "check num available tpus\n";
cout << available_tpus.size() << "\n";
cout << "get edge session\n";
this->edgetpu_context_ = edgetpu::EdgeTpuManager::GetSingleton()->OpenDevice();
cout << "check num available tpus again:\n";
cout << available_tpus.size() << "\n";
cout << "get model buffer\n";
this->model_ = tflite::FlatBufferModel::BuildFromFile(model_path.c_str());
cout << "build model interpeter\n";
this->model_interpreter_ = coral::BuildEdgeTpuInterpreter(*model_, this->edgetpu_context_.get());其结果是:
Hello
check num available tpus
3689348814741910324
get edge session
check num available tpus again:
3689348814741910324
get model buffer
build model interpeter
Segmentation fault发布于 2019-10-31 17:35:08
不知怎么没检测到tpu,你能试试这个吗:
const auto& available_tpus = edgetpu::EdgeTpuManager::GetSingleton()->EnumerateEdgeTpu();
cout << available_tpus.size() << "\n"; // hopefully we'll see 1 here然后创建上下文:
std::shared_ptr<edgetpu::EdgeTpuContext> edgetpu_context =
edgetpu::EdgeTpuManager::GetSingleton()->OpenDevice(
available_tpus[0].type, available_tpus[0].path);https://stackoverflow.com/questions/58641551
复制相似问题