2016-07-28 34 views
6

'dan tasarruf etmek için değişken yok Bir tensorflow CNN yazdım ve zaten eğitildi.Tensorflow ValueError:

ValueError: No variables to save

Benim eval kodu burada bulunabilir:

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() 

cevap

10

tf.train.Saver sonra değişkenler oluşturulması gerekir Birkaç numuneler ama ne yazık ki onun tükürüyormuş dışarı çalıştırmak için geri yüklemeyi isteyecek geri yüklemek (veya kaydetmek). Ayrıca, bu değişkenler ile aynı grafikte oluşturulmalıdır.

çalışmalıdır bu satırdan sonra koruyucu oluşturma ekleyerek Process.forward_propagation(…) Modelinizle değişkenleri oluşturur varsayarsak:

forward_propgation_results = Process.forward_propagation(images) 

Ayrıca, size böylece tf.Session kurucusuna oluşturulan yeni tf.Graph geçmelidir sess'un oluşturulmasını da with bloğunun içinde taşımanız gerekir. Ben eval data = eval verileri kaldırmak yaptım ve hala çalışması gerektiğini rağmen,

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

Çok teşekkür ederim:

çıkan fonksiyon gibi bir şey olacaktır. Şu anda programı çalıştırdığımda, python hiçbir şey çıkarmıyor. –

+0

Burada eval_data'nın nereden geldiğinden emin değilim, çünkü bu ad sizin örneğinizde bağlı değil. Process.eval_inputs() 'bir giriş boru hattı kullanıyor mu? Belki de 'saver.restore()' çalıştırdıktan sonra 'tf.train.start_queue_runners (oturum = oturum) eklemeniz gerekir. – mrry

+0

Teşekkür ederim. Kod sabit ama bu satırı ekledikten sonra yeni bir hata attı. E tensorflow/core/client/tensor_c_api.cc: 485] hedefleri [0] aralık dışı –