Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TensorFlow Error found in Tutorial

Tags:

Dare I even ask? This is such a new technology at this point that I can't find a way to solve this seemingly simple error. The tutorial I'm going over can be found here- http://www.tensorflow.org/tutorials/mnist/pros/index.html#deep-mnist-for-experts

I literally copied and pasted all of the code into IPython Notebook and at the very last chunk of code I get an error.

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

After running this code, I receive this error.

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

I thought that I may need to install or reinstall TensorFlow via conda install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl but conda doesn't even know how to install it.

Does anyone have any idea of how to work around this error?

like image 522
Ravaal Avatar asked Nov 18 '15 16:11

Ravaal


People also ask

How do I fix ModuleNotFoundError No module named tensorflow?

The Python "ModuleNotFoundError: No module named 'tensorflow'" occurs when we forget to install the tensorflow module before importing it or install it in an incorrect environment. To solve the error, install the module by running the pip install tensorflow command.


2 Answers

I figured it out. As you see in the value error, it says No default session is registered. Use 'with DefaultSession(sess)' or pass an explicit session to eval(session=sess) so the answer I came up with is to pass an explicit session to eval, just like it says. Here is where I made the changes.

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

And

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

Now the code is working fine.

like image 200
Ravaal Avatar answered Oct 07 '22 00:10

Ravaal


I encountered a similar error when I tried a simple tensorflow example.

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

My solution is to use sess.as_default(). For example, I changed my code to the following and it worked:

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

Another solution can be use InteractiveSession. The difference between InteractiveSession and Session is that an InteractiveSession makes itself the default session so you can run() or eval() without explicitly call the session.

v = tf.Variable(10, name="v") sess = tf.InteractiveSession() sess.run(v.initializer) print(v.eval()) 
like image 35
N.Hung Avatar answered Oct 06 '22 23:10

N.Hung