2015-11-18 4 views
22

Dare Я даже спрашиваю? Это такая новая технология на данный момент, что я не могу найти способ решить эту, казалось бы, простую ошибку. Учебное пособие, которое я собираюсь найти, можно найти здесь: http://www.tensorflow.org/tutorials/mnist/pros/index.html#deep-mnist-for-expertsОшибка TensorFlow в учебнике

Я буквально скопировал и вставил весь код в блокнот IPython и в самый последний кусок кода получаю сообщение об ошибке.

# 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}) 

После выполнения этого кода, я получаю эту ошибку.

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

Я подумал, что, возможно, потребуется установить или переустановить TensorFlow через Конда установить https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl но Конда даже не знает, как установить его.

Есть ли у кого-нибудь идеи, как обойти эту ошибку?

ответ

29

Я понял. Как вы видите в ошибке значения, он говорит No default session is registered. Use 'with DefaultSession(sess)' or pass an explicit session to eval(session=sess), поэтому ответ, который я придумал, заключается в передаче явного сеанса для eval, точно так же, как сказано. Здесь я сделал изменения.

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

И

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

Теперь код работает отлично.

+12

или вы можете просто создать сеанс, Sess = tf.InteractiveSession, а затем падение «сессии = SESS» арг, он будет принимать сеанс, который вы создали по умолчанию –

+0

Спасибо. Это работает. @ Ярослав Булатов круто. :) – dksahuji

1

Я столкнулся с аналогичной ошибкой, когда попробовал простой пример тензорного потока.

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

Моим решением является использование sess.as_default(). Например, я изменил свой код на следующий и работал:

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

Другим решением может быть использование InteractiveSession. Разница между InteractiveSession и Session заключается в том, что InteractiveSession делает сеанс по умолчанию, поэтому вы можете запускать() или eval() без явного вызова сеанса.

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

 Смежные вопросы

  • Нет связанных вопросов^_^