2

以前に訓練されたテンソル訓練モデルをチェックポイントファイルから読み込もうとしていますが、これらのチェックポイントファイルには矛盾があります。 ** ckpt.metaファイル:エラー:テンソルのグラフがセッションのグラフと異なっています

graph = tf.Graph() 
sess = tf.InteractiveSession(graph=graph) 
saver = tf.train.import_meta_graph('/data/model_cache/model.ckpt-39.meta') 
    ckpt = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir) 
    if ckpt and ckpt.model_checkpoint_path: 
     if os.path.isabs(ckpt.model_checkpoint_path): 
      saver.restore(sess, ckpt.model_checkpoint_path) 

私はモデルをロードした後、私はdeep-dreamアルゴを実装するために推論のためにこのモデルを使用する方法があります。

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 555, in eval 
return _eval_using_default_session(self, feed_dict, self.graph, session)File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework /ops.py", line 3495, in _eval_using_default_session 
raise ValueError("Cannot use the given session to evaluate tensor: " 
ValueError: Cannot use the given session to evaluate tensor: the tensor's graph is different from the session's graph. 

私はtf.get_default_graph()とsess.graphが同じメモリアドレスを指していることを確認しました:私は、エラーの下に取得するデフォルトのセッションでevalを呼び出すときに問題があります。非常に基本的な何かが欠けている必要があります。

私はテンソルフローに新しいので、この点に関する助けが本当に高く評価されます。おかげ

+0

'InteractiveSession'の代わりに通常の' Session'を使用しようとしています – fabrizioM

+0

エラーメッセージから、オブジェクト上で 'tensor.eval()'または 'op.run()'を呼び出すと思いますこれは 'sess.graph'とは別のグラフにあります - あなたは' tensor.graph'や 'op.graph'を(必要に応じて)印刷して調べることができます。そのオブジェクトがどのように構築されたか、そしてあなたがそれを呼び出すコンテキストについてもっと知ることなく、どのように起こるかもしれないかについては確かに言うのは難しいです。より多くのコードを共有できますか? – mrry

答えて

0

は、あなたが輸入しているメタグラフ、すなわち/data/model_cache/model.ckpt-39.metaが異なるフォームがチェックポイントtf.train.get_checkpoint_state(FLAGS.checkpoint_dir)を使用したものである可能性が非常に高いです。

通常の練習はget_checkpoint_state()コール(またはtf.train.latest_checkpoint(FLAGS.checkpoint_dir))を持っており、それがimport_meta_graph()呼び出しで出力だ使用し、その後、同じチェックポイント名で(とセーバーを返された)セッション内の変数を復元することです。これはもちろん、各チェックポイントにメタグラフが保存されている場合に実行できます。

関連する問題