2015-11-18 47 views
22

Dare içinde bulundu Dare Hatta soruyorum? Bu noktada böyle yeni bir teknoloji, bu basit hatayı çözmenin bir yolunu bulamıyorum. Ben gidiyorum öğretici burada bulunabilir-http://www.tensorflow.org/tutorials/mnist/pros/index.html#deep-mnist-for-expertsTensorFlow Hata Bulucu

Ben tam anlamıyla kopyalayın ve tüm kodu IPython Defterine yapıştırılmış ve en son kod bir hata alıyorum.

# To train and evaluate it we will use code that is nearly identical to that for the simple one layer SoftMax network above. 
# The differences are that: we will replace the steepest gradient descent optimizer with the more sophisticated ADAM optimizer. 

cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv)) 
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) 
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) 
sess.run(tf.initialize_all_variables()) 
for i in range(20000): 
    batch = mnist.train.next_batch(50) 
    if i%100 == 0: 
     train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0}) 
    print "step %d, training accuracy %g"%(i, train_accuracy) 
    train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 

print "test accuracy %g"%accuracy.eval(feed_dict={ 
    x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}) 

Bu kodu çalıştırdıktan sonra, bu hatayı alıyorum.

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-46-a5d1ab5c0ca8> in <module>() 
    15 
    16 print "test accuracy %g"%accuracy.eval(feed_dict={ 
---> 17  x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}) 

/root/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc in eval(self, feed_dict, session) 
    403 
    404  """ 
--> 405  return _eval_using_default_session(self, feed_dict, self.graph, session) 
    406 
    407 

/root/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc in _eval_using_default_session(tensors, feed_dict, graph, session) 
    2712  session = get_default_session() 
    2713  if session is None: 
-> 2714  raise ValueError("Cannot evaluate tensor using eval(): No default " 
    2715      "session is registered. Use 'with " 
    2716      "DefaultSession(sess)' or pass an explicit session to " 

ValueError: Cannot evaluate tensor using eval(): No default session is registered. Use 'with DefaultSession(sess)' or pass an explicit session to eval(session=sess) 

ben https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl yüklemek yüklemek veya Conda aracılığıyla TensorFlow yeniden yüklemeniz gerekebilir ama Conda bile nasıl yükleneceği bilmiyor düşündük.

Bu hataya nasıl bir çözüm bulunacağı konusunda bir fikri olan var mı?

cevap

29

Bunu çözdüm. Değer hatası içinde gördüğünüz gibi, No default session is registered. Use 'with DefaultSession(sess)' or pass an explicit session to eval(session=sess) diyor, bu yüzden geldiğim cevap, açık bir oturumu değerlendirmek için olduğu gibi değerlendirmektir. Burada değişiklikleri yaptım.

if i%100 == 0: 
     train_accuracy = accuracy.eval(session=sess, feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0}) 

Ve

train_step.run(session=sess, feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 

Şimdi kod iyi çalışıyor.

+12

veya sadece oturumu oluşturabilir, sess = tf.InteractiveSession ve sonra bırakın "oturum = sess" args, bu varsayılan –

+0

üyeye oluşturduk oturumu götüreceğiz. Bu çalışıyor. @YaroslavBulatov havalı. :) – dksahuji

1

Basit bir tensorflow örneğini denediğimde benzer bir hatayla karşılaştım.

import tensorflow as tf 
v = tf.Variable(10, name="v") 
sess = tf.Session() 
sess.run(v.initializer) 
print(v.eval()) 

Çözümüm, sess.as_default() işlevini kullanmaktır. Örneğin, kodumu aşağıdakini değiştirdim ve şu şekilde çalıştım:

Başka bir çözüm InteractiveSession'ı kullanabilir. InteractiveSession ve Session arasındaki fark, bir InteractiveSession'ın kendisini varsayılan oturum haline getirmesidir, bu nedenle, açıkça oturum açmadan() veya eval() işlevini çalıştırabilirsiniz.

v = tf.Variable(10, name="v") 
sess = tf.InteractiveSession() 
sess.run(v.initializer) 
print(v.eval())