2

私は訓練されたCNNモデルを.pbファイルとして持っています。私はモデルをロードし、すべての画像の最後のレイヤーから最終ベクトルを抽出することができます。今私は特定のレイヤーから来て、最終的なイメージではないベクトルを抽出したいと思います。私はモデルを読み込むためにimport_graph_def関数を使用しています。.pbファイルが大きいため、ファイルを開くことができないため、レイヤの名前はわかりません。Tensorflow:事前にトレーニングされたCNNの特定のレイヤーからイメージ機能を抽出するにはどうすればよいですか?

私が望むレイヤーまでベクトルを取得するために、モデルの一部を実行して全体を実行する方法はありますか?

+0

あなたが試してみることの1つは、tf.Graph.get_operations()を使ってグラフ内のノード(操作)のリストを取得することです。次に、ノード名を印刷して、必要なものを検索することができます。 –

+0

ありがとうございました!私は必要なテンソルを返すimport_graph_def関数を使用しています。テンソルを印刷すると、Tensor( "pool_3/_reshape:0"、shape =(1、2048)、dtype = float32)が得られます。今私は名前 "プール_3:0"と形状=(1,8,8,2048)のボトルネックテスターを取得したいと思います。どのようにテンソルを返すべきですか? – chrisrn

+0

Stevenのおかげで問題が解決しました。 – chrisrn

答えて

3

コメントにtf.Graph.get_operations()を使用するPeter Hawkins氏以外のアプローチは、テンソルボードを使用して、抽出したいレイヤの名前を見つけることです。

そこから、あなたはちょうどあなたがしたい方の特徴アウト抽出すること

graph.get_tensor_by_name("import/layer_name") 

を使用することができます。

+0

テンソルボードはまだ使用していませんが、ありがとうございます! – chrisrn

+0

ああ、あなたは私を救った。私はテンソルボードを使わなければならないと思っていましたが、あなたが言いましたコマンドだけを実行して、私が望むテンソルを得ることができます。ありがとうございました! – chrisrn

+0

問題ありません。完了したら解決してください。またテンソルを得ることができるようにするために必要な層の名前がわからないと述べたので、私はテンソルボードだけを述べました。それはうまくいった! – Steven

関連する問題