2017-11-26 17 views
0

私は、最初からカスタム200クラスの開始v3モデルを訓練しました。今私は出力ディレクトリにファイルをckptしている。どのように推論を実行するためにそれらのモデルを使用する?開始時に推論を実行する方法v3訓練されたモデル?

GPUにモデルをロードし、モデルがGPUに残っている間はいつでもイメージを渡すことができます。 TensorFlowサービングを使用することは私の選択肢ではありません。

注:これらのモデルをフリーズしようとしましたが、フリーズ中にoutput_nodesを正しく配置できませんでした。 ImagenetV3/Predictions/Softmaxを使用しましたが、フリーズモデルから必要なテンソルを取得できないため、feed_dictで使用できませんでした。

この推論部分のTFサイト&レポに関する文書が不十分です。

答えて

0

あなたが正しい軌道に乗っているように聞こえますが、推論時にoptimizerを計算するように尋ねることを除いて、訓練時間と同じように実際には何もしません。そうしないと、重みは更新されません。通常

https://www.tensorflow.org/programmers_guide/saved_model

(モデルを復元するときには、2つのオプションがあり、どちらかあなたがコードから再びOPSを構築:

tensorflowドキュメントの保存と復元ガイドがチェックポイントからモデルを復元する方法を説明しますbuild_graph()メソッド)、チェックポイントから変数をロードします。このメソッドを最も一般的に使用します。または、グラフ定義がチェックポイントと共に保存されている場合、チェックポイントからグラフ定義&の変数をロードできます。

グラフをロードしたら、セッションを作成し、グラフに出力だけを計算させます。テンソルImagenetV3/Predictions/Softmaxは私には似ています(私はあなたが作業している特定のモデルにすぐには慣れていません)。適切な入力、画像、および場合によってはグラフに必要なパラメータを渡す必要があります。is_trainブール値が必要な場合もあります。

テンポラリ・フローでオプティマイザ・オペレーションを計算する必要がないため、ウェイトは更新されません。グラフの計算を要求する操作以外に、訓練と推論の間には違いはありません。

Tensorflowは、トレーニングで行ったのと同じようにGPUをデフォルトで使用します。そのため、すべてがあなたのために舞台裏で処理されます。

+0

私は現在、モデルを訓練し、評価するためにスリムを使用しています。これは、モデルレベルでどのように動作しているかを実際に理解するために、多くの抽象化を追加します。私はそれを深く掘り下げて報告します。 私は両方の方法を試みました。 ckpt.metaとckpt.dataファイルを使用して、正味のアーキテクチャと重みをロードする。この点を超えることはできませんでした。 そして、上記の出力ノードを使用してモデルをフリーズし、フリーズされたモデルで利用可能なすべての操作を完了しましたが、それ以上は実行できませんでした。 – SnShines

+0

ああ、多分テンソルフローコミュニティではなく、抽象化フレームワークの質問をして、あなたに必要な答えを得るでしょう。私はその枠組みを手助けすることはできません。私は単なるテンソルフローの純粋主義者です。 :) –

+0

私は分析されたフリーズグラフとそのすべての操作でモデルをフリーズすることができました。ダウンロードされたpretrained開始v3 .pbモデルには "/ input"という名前のオペレーションがあり、私の訓練されたモデルにはそのオペレーションはありません。それは "fifoqueue"とものがあります。 プレースホルダ入力を追加するにはどうすればよいですか?ネットをトレーニングする間に追加されますか、それとも最終的なgraph.pbファイルに追加できますか? – SnShines

関連する問題