0

tf.image.non_max_suppressionFaster-RCNN ネットワークでテンソルフローを使用しています。テンソルフロー グラフは正常に構築され、エラーなしで実行されますが、グラフを実行すると、出力は空のテンソルになり、サイズが 0 の入力に依存する次元になります (たとえば、形状 (0,4) の出力テンソルを取得します)。そこで、tfdbgツールを使用して何が起こっているのかを確認しました。テンソル値はopUninitialized tensor用であることがわかりました。tf.image.non_max_suppressionnms op の出力に依存する後続のすべてのテンソルも として表示されUnintialized tensorます。

この Faster-RCNN ネットワークをトレーニングし、 を使用して重みを保存しましたtf.train.Saver(..).save(..)。ネットワークをトレーニングしたとき、NMS を実行するために python numpy 関数を使用していました。それは op ラッパーを使用してネットワークにプラグインされtf.py_func、モデルのトレーニング後、python 関数を tensorflow 実装に変更することにしました。

tf.image.non_max_suppressionには学習可能なパラメーターがないため、保存したモデルを読み込んでグラフを実行すると、テンソルが初期化されない理由がわかりません。sess.run(tf.global_variables_initializer())私もモデルをロードする前にやろうとしましたが、変更はなく、NMS とその後の操作をtf.train.Saver(..).restore(..)まだ見Uninitialized tensorています。tfdbg

この動作とそれを解決する方法についてのアイデアはありますか?

これは私が使用する方法ですtf.image.non_max_suppression

keep = tf.image.non_max_suppression(proposals_yxyx, 
                             scores, 
                             tf.constant(cfg[cfg_key].RPN_POST_NMS_TOP_N), 
                             cfg[cfg_key].RPN_NMS_THRESH, 
                             name="Non-maximal-suppression")
4

0 に答える 0