Моя цель - запустить оптимизированный тензорный тензорный граф в приложении C ++. Я использую TensorFlow 1.8 с TENSORRT 4. Используя API Python, я могу оптимизировать график и вижу хорошее повышение производительности.
Попытка запустить граф в c ++ завершается неудачно со следующей ошибкой:
Not found: Op type not registered 'TRTEngineOp' in binary running on e15ff5301262. Make sure the Op and Kernel are registered in the binary running in this process.
Другие, не тензорные графы работают. У меня была похожая ошибка с API-интерфейсом Python, но она была решена путем импорта tenorflow.contrib.tensorrt. Исходя из ошибки, я уверен, что ядро и операционная система не зарегистрированы, но я не знаю, как это сделать в приложении после того, как тензор потока был построен. С другой стороны, я не могу использовать bazel, но я обязан использовать cmake. Пока я связываюсь с libtensorflow_cc.so
и libtensorflow_framework.so
.
Может кто-нибудь помочь мне здесь? спасибо!
Обновление:
Использование c или c ++ api для загрузки _trt_engine_op.so
не выдает ошибку при загрузке, но не запускается с
Invalid argument: No OpKernel was registered to support Op 'TRTEngineOp' with these attrs. Registered devices: [CPU,GPU], Registered kernels:
<no registered kernels>
[[Node: my_trt_op3 = TRTEngineOp[InT=[DT_FLOAT, DT_FLOAT], OutT=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], input_nodes=["tower_0/down_0/conv_0/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer", "tower_0/down_0/conv_skip/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer"], output_nodes=["tower_0/down_0/conv_skip/Relu", "tower_0/down_1/conv_skip/Relu", "tower_0/down_2/conv_skip/Relu", "tower_0/down_3/conv_skip/Relu"], serialized_engine="\220{I\000...00\000\000"](tower_0/down_0/conv_0/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer, tower_0/down_0/conv_skip/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer)]]