2

이전에 훈련 된 텐서 훈련 모델을 검사 점 파일에서로드하려고합니다. 이제이 검사 점 파일에 op varaibles이 있으므로 그래프를로드해야합니다. 먼저 graph_def를로드해야합니다. ** 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가 동일한 메모리 주소를 가리키는 것을 확인했다 : 나는 오류가 아래 얻을 기본 세션으로 평가 호출 할 때 문제입니다. 매우 기본적인 무언가가 있어야합니다.

나는 tensorflow에 익숙하지 않으므로 이와 관련하여 도움이 될 것입니다. 감사합니다

+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() 호출 출력,의 사용 복원하는 것입니다. 메타 그래프가 각 체크 포인트에 저장되면 물론이 작업을 수행 할 수 있습니다.