問題タブ [tensorrt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2777 参照

python - UFF パーサー エラーが原因で TensorRT エンジンが失敗する

pix2pix アーキテクチャに基づく Tensorflow 凍結モデルをNVIDIA TensorRT エンジンに変換しようとしています。TensorRT 3 バージョンがあります。私のレイヤーは TensorRT 3 でサポートされていますが、一部のレイヤーは UFF パーサーではサポートされていません。私が直面している問題は、次の行によるものです。

mean, variance = tf.nn.moments(input, axes=[0, 1, 2], keep_dims=False)

内部操作の 1 つはsquared differenceTensorRT でサポートされていないもので、実行時に次のエラーが返されます。

UFF グラフに変換中 警告: keep_dims はサポートされていません。無視します...

警告: レイヤーの変換関数が登録されていません: SquaredDifference はまだです。

カスタム op SquaredDifference として変換 >

generate_output/generator/decoder_2/batchnorm/moments/SquaredDifference 名:

"generate_output/generator/decoder_2/batchnorm/moments/SquaredDifference"

op: "二乗差"

入力: "generate_output/generator/decoder_2/batchnorm/Identity"

入力: "generate_output/generator/decoder_2/batchnorm/moments/StopGradient"

属性 {

キー:「T」

価値 {

タイプ: DT_FLOAT

}

}

トレースバック (最新の呼び出しが最後):

ファイル「scripts/convert_plan.py」、71 行目、data_type

ファイル「scripts/convert_plan.py」、22 行目、frozenToPlan text=False 内

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/conversion_helpers.py」の 103 行目、from_tensorflow_frozen_model で from_tensorflow(graphdef, output_nodes, **kwargs) を返す

ファイル "/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/conversion_helpers.py"、75 行目、from_tensorflow name="main" 内)

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py」、64 行目、convert_tf2uff_graph uff_graph、input_replacements 内)

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py」、51 行目、convert_tf2uff_node op、name、tf_node、inputs、uff_graph、tf_nodes=tf_nodes 内)

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py」、28 行目、convert_layer フィールド = cls.parse_tf_attrs(tf_node.attr)

ファイル "/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py"、177 行目、キーの parse_tf_attrs、attrs.items() の val}

ファイル "/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py"、177 行目、キーは attrs.items() の val}

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py」、172 行目、parse_tf_attr_value で cls.convert_tf2uff_field(code, val) を返す

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py」、146 行目、convert_tf2uff_field で TensorFlowToUFFConverter.convert_tf2numpy_dtype(val) を返す

ファイル「/usr/local/lib/python2.7/dist-packages/uff/converters/tensorflow/converter.py」、74 行目、convert_tf2numpy_dtype で np.dtype(dt[dtype]) を返す

TypeError: リストのインデックスは AttrValue ではなく整数でなければなりません

tf.nn.moments私は2つの代替方法に置き換えようとしました:

  1. mean = tf.reduce_mean(input, axis = [0, 1, 2], keep_dims=False)

    devs_squared = tf.multiply(input - mean, input - mean)

    variance = tf.reduce_mean(devs_squared, axis = [0, 1, 2], keep_dims=False)

レイヤーはすべて TensorRT 3 でサポートされていますreduce_meanが、UFF パーサーではサポートされておらず、次のエラーがスローされます。

UFFParser: パーサー エラー:

generate_output/generator/encoder_2/batchnorm/Mean: Reduce 演算子はサポートされていません

  1. 2 番目の方法:

    mean = tf.keras.backend.sum(input, axis = [0, 1, 2])

    div_factor_1 = input.get_shape().as_list()[0]*input.get_shape().as_list()[1]*input.get_shape().as_list()[2]

    mean = mean * (1 / div_factor_1)

    devs_squared = tf.multiply(input - mean, input - mean)

    variance = tf.keras.backend.sum(devs_squared, axis = [0, 1, 2])

    div_factor_2 = devs_squared.get_shape().as_list()[0]*devs_squared.get_shape().as_list()[1]*devs_squared.get_shape().as_list()[2]

    variance = variance * (1 / div_factor_2)

しかし、再び UFF パーサー エラーが発生します。

UFFParser: パーサー エラー: generate_output/generator/encoder_2/batchnorm/Sum: Reduce 演算子はサポートされていません

同じエラーに対応するために、代替 2 で keras.backend.sum の代わりに reduce_sum も使用しました。

0 投票する
6 に答える
4905 参照

c++ - TensorRT を使用した C++ Tensorflow API

私の目標は、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と、ロード中にエラーはスローされませんが、実行に失敗します