2016-07-28 3 views
6

나는 tensorflow CNN을 작성했으며 이미 훈련을 마쳤습니다.Tensorflow ValueError : 저장할 변수가 없습니다.

ValueError: No variables to save

내 평가 코드를 여기에서 찾을 수 있습니다 :

import tensorflow as tf 

import main 
import Process 
import Input 

eval_dir = "/Users/Zanhuang/Desktop/NNP/model.ckpt-30" 
checkpoint_dir = "/Users/Zanhuang/Desktop/NNP/checkpoint" 

init_op = tf.initialize_all_variables() 
saver = tf.train.Saver() 

def evaluate(): 
    with tf.Graph().as_default() as g: 
    sess.run(init_op) 

    ckpt = tf.train.get_checkpoint_state(checkpoint_dir) 

    saver.restore(sess, eval_dir) 

    images, labels = Process.eval_inputs(eval_data = eval_data) 

    forward_propgation_results = Process.forward_propagation(images) 

    top_k_op = tf.nn.in_top_k(forward_propgation_results, labels, 1) 

    print(top_k_op) 

def main(argv=None): 
    evaluate() 

if __name__ == '__main__': 
    tf.app.run() 

답변

10

tf.train.Saver 후 변수를 작성해야합니다 나는 몇 가지 샘플하지만 불행히도 그 침 아웃에서 실행하는 복원 할 복원 (또는 저장)하려는 또한 해당 변수와 동일한 그래프에 만들어야합니다.

작동해야이 선 후 보호기 생성을 추가, Process.forward_propagation(…)는 모델의 변수를 생성한다고 가정 :

forward_propgation_results = Process.forward_propagation(images) 

또한, 당신은 당신 때문에 tf.Session 생성자에 만든 새 tf.Graph를 통과해야 블록 내에서 sess의 생성을 이동해야합니다. 내가 평가 데이터 = 평가 데이터를 제거했고, 그것은 여전히 ​​작동해야하지만,

def evaluate(): 
    with tf.Graph().as_default() as g: 
    images, labels = Process.eval_inputs(eval_data = eval_data) 
    forward_propgation_results = Process.forward_propagation(images) 
    init_op = tf.initialize_all_variables() 
    saver = tf.train.Saver() 
    top_k_op = tf.nn.in_top_k(forward_propgation_results, labels, 1) 

    with tf.Session(graph=g) as sess: 
    sess.run(init_op) 
    saver.restore(sess, eval_dir) 
    print(sess.run(top_k_op)) 
+0

가 대단히 감사합니다 :

결과 기능은 무엇인가있을 것입니다. 지금은 프로그램을 실행할 때, 파이썬 아무것도 출력하지 않습니다. –

+0

'eval_data'의 출처가 확실하지 않습니다. 왜냐하면 그 이름은 당신의 예제에 묶여 있지 않기 때문입니다. 'Process.eval_inputs()'는 입력 파이프 라인을 사용합니까? 아마도'saver.restore()'를 실행 한 후에'tf.train.start_queue_runners (sess = sess)를 추가해야 할 것이다. – mrry

+0

감사합니다. 코드가 수정되었지만 해당 행을 추가 한 후 새로운 오류가 발생했습니다. E tensorflow/core/client/tensor_c_api.cc : 485] targets [0]이 범위를 벗어났습니다. –

관련 문제