2017-02-27 8 views
0

私のプロジェクトの1つでは、公開トレーニングを受けた初心者向けのv3モデル(http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz)を使用しました。テンソルフロー内のinception-v3チェックポイントファイルの使用

私は最後の特徴ベクトル(pool_3/_reshape:0の出力)を使いたいだけです。スクリプト例classify_image.pyを見ることで、Deep DNNを通して画像を正常に渡し、ボトルネックテンソル(bottleneck_tensor = sess.graph.get_tensor_by_name('pool_3/_reshape:0'))を抽出し、それをさらなる目的に使用することができます。

私は最近、より最近の訓練された開始モデルがあることを知りました。トレーニングのチェックポイントはhttp://download.tensorflow.org/models/image/imagenet/inception-v3-2016-03-01.tar.gzです。

古いものの代わりにこの新しい事前訓練を使いたいと思います。ただし、ファイル形式が異なります。 「古いモデル」は、簡単に再利用可能なProtocolBufferフォーム(classify_image_graph_def.pb)のグラフのdefを使用します。 「新しいもの」はチェックポイント形式しか提供しません。私はそれを自分のコードに挿入するのに苦労しています。

チェックポイントファイルをProtocolBufferファイルに変換してグラフを作成する簡単な方法はありますか?

ありがとうございます!

+0

は、このチュートリアルを見て撮影したことがありますか? https://www.tensorflow.org/programmers_guide/variables#checkpoint_filesチェックポイントファイルから復元する方法について説明しています。 – Neal

答えて

0

あなたがfreeze_graph.pyを使用する必要がありそうです: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py

スクリプトは、スタンドアロンGraphDefファイルでのconst OPSにチェックポイントの変数に変換します。 このスクリプトは、GraphDef proto、SaverDef proto、およびチェックポイントファイルに格納された一連の変数値をとり、すべての変数opsを 変数の値を含むconst opsに変換してGraphDefを出力するように設計されています。 C++で1つのファイルを読み込む必要があるとき、特に依存するRestoreTensorオペレーションとファイル読み込み呼び出しにアクセスできないモバイルや埋め込み環境の場合は、これを行うと便利です。

コマンドラインの使用方法の一例は以下のとおりです。

bazel build tensorflow/python/tools:freeze_graph && \ 
bazel-bin/tensorflow/python/tools/freeze_graph \ 
--input_graph=some_graph_def.pb \ 
--input_checkpoint=model.ckpt-8361242 \ 
--output_graph=/tmp/frozen_graph.pb --output_node_names=softmax 
関連する問題