2

私の目標は、C++ アプリケーションで tensorrt に最適化された tensorflow グラフを実行することです。私は tensorrt 4 で tensorflow 1.8 を使用しています。Python API を使用すると、グラフを最適化し、パフォーマンスの向上を確認できます。

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.

その他の非テンソルグラフは機能します。Python api で同様のエラーが発生しましたが、tensorflow.contrib.tensorrt をインポートすることで解決しました。エラーから、カーネルと op が登録されていないことはかなり確信していますが、テンソルフローが構築された後にアプリケーションで登録する方法を知りません。ちなみに、bazel は使用できませんが、cmake を使用する必要があります。これまでのところ、 と にリンクしlibtensorflow_cc.solibtensorflow_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)]]
4

6 に答える 6