2017-02-08 2 views
0

モデルのウェイト/バイアスを取得するためにfreeze_graph関数を使用しようとしましたが、その過程で、私の開始ネットワークに変数がないようです、画像を正しく分類することができるにもかかわらず。次のように私のコードは次のとおりです。ValueError:Tensorflowチェックポイントを保存するときに保存する変数がありません

#!/usr/bin/python 
import tensorflow as tf 
import numpy as np 


def outputCheckpoint(sess): 
    with sess.as_default(): 
     print("Saving to checkpoint") 
     saver = tf.train.Saver() 
     # Fails on this line: 'ValueError: No variables to save' 
     saver.save(sess, '/path/to/tensorflow/graph_saver/save_checkpoint') 

def main(): 
    with tf.device('/cpu:0'): 
     with open("tensorflow_inception_graph.pb", mode='rb') as f: 
      fileContent = f.read() 

     graph_def = tf.GraphDef() 
     graph_def.ParseFromString(fileContent) 

     images = tf.placeholder("float", [ None, 299, 299, 3]) 

     tf.import_graph_def(graph_def, input_map={ "Mul": images }) 
     print "graph loaded from disk" 

     graph = tf.get_default_graph() 

     with tf.Session() as sess: 
      init = tf.global_variables_initializer() 
      sess.run(init) 
      outputCheckpoint(sess) 

main() 

エラーは次のとおりです。

graph loaded from disk 
Saving to checkpoint 
Traceback (most recent call last): 
    File "./inception_benchmark.py", line 28, in <module> 
    main() 
    File "./inception_benchmark.py", line 24, in main 
    saver = tf.train.Saver() 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 1067, in __init__ 
    self.build() 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 1088, in build 
    raise ValueError("No variables to save") 
ValueError: No variables to save 

すでに当初のネットワークがダウンロードされていない場合は、これはあなたに.pbファイルを取得します:

$ wget https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip -O tensorflow/examples/label_image/data/inception_dec_2015.zip

また、誰かが興味がある場合は、私のフルコードの要点があります:gist

ここで何が起こっているのか誰も知っていますか?

ありがとうございます! freeze_graphツールは何

答えて

2

が、これはあなたがGraphDefを保存するとは対照的に(シングルいるProtobufファイルにグラフ上の推論を実行するために必要なすべての情報を保存することができますnodes- tf.constantにグラフでVariableのすべてのノードに変換されチェックポイントデータは別にVariable)。

ここでは、正常にフリーズしたグラフ(tensorflow_inception_graph.pb)の結果があります:それらはすべて定数に変換されているため、保存する変数はありません!

+0

ここで私は実際の問題をテストするのが簡単な問題にまで減らしたと思っていました。ありがとう! – smckee

+0

OK。では、フリーズグラフを保存するにはどうしたらいいですか? – AHA

関連する問題