2017-03-03 19 views
0

コードtf.contrib.slim.get_variables_to_restore()の下で実行すると、all_varsの空の値[]が返され、tf.train.Saverを呼び出すときにエラーが発生します。詳細エラーメッセージが表示されます。tf.contrib.slim.get_variables_to_restore()は値を返しません

何か不足していますか?

>>> import tensorflow as tf 
>>> inception_exclude_scopes = ['InceptionV3/AuxLogits', 'InceptionV3/Logits', 'global_step', 'final_ops'] 
>>> inception_checkpoint_file = '/Users/morgan.du/git/machine-learning/projects/capstone/yelp/model/inception_v3_2016_08_28.ckpt' 
>>> with tf.Session(graph=tf.Graph()) as sess: 
...  init_op = tf.global_variables_initializer() 
...  sess.run(init_op) 
...  reader = tf.train.NewCheckpointReader(inception_checkpoint_file) 
...  var_to_shape_map = reader.get_variable_to_shape_map() 
...  all_vars = tf.contrib.slim.get_variables_to_restore(exclude=inception_exclude_scopes) 
...  inception_saver = tf.train.Saver(all_vars) 
...  inception_saver.restore(sess, inception_checkpoint_file) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 7, in <module> 
    File "/Users/morgan.du/miniconda2/lib/python2.7/site-packages/tensorflow/python/training/saver.py", line 1051, in __init__ 
    self.build() 
    File "/Users/morgan.du/miniconda2/lib/python2.7/site-packages/tensorflow/python/training/saver.py", line 1072, in build 
    raise ValueError("No variables to save") 
ValueError: No variables to save 

答えて

0

ここでの問題は、グラフが空である、変数を含んでいません。新しいグラフはwith tf.Session(graph=tf.Graph()):行に作成し、次の行はいずれもtf.Variableオブジェクトを作成しません。事前に訓練を受けたTensorFlowモデルを復元するには

、あなたは3つのいずれかを実行する必要があります。

  1. は、モデルを訓練するために使用したのと同じ、Pythonのグラフの建物コードを実行することにより、モデルグラフを再構築最初の場所。
  2. グラフ構造とモデル変数を再構築する方法に関する情報が含まれている「MetaGraph」を読み込みます。 MetaGraphの作成方法と使用方法の詳細については、this tutorialを参照してください。 MetaGraphはチェックポイントファイルと一緒に作成されることが多く、通常は拡張子が.metaです。
  3. "SavedModel"をロードします。これには "MetaGraph"が含まれています。詳細については、ドキュメントhereを参照してください。