Error TensorFlow encontrado en Tutorial
¿Me atrevo siquiera a preguntar? Esta es una tecnología tan nueva en este punto que no puedo encontrar una manera de resolver este error aparentemente simple. El tutorial que estoy repasando se puede encontrar aquí - http://www.tensorflow.org/tutorials/mnist/pros/index.html#deep-mnist-for-experts
Literalmente copié y pegué todo el código en IPython Notebook y en el último fragmento de código obtengo un 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})
Después de ejecutar este código, recibo este 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)
Pensé que Es posible que tenga que instalar o reinstalar TensorFlow a través de conda install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl pero conda ni siquiera sabe cómo instalarlo.
¿alguien tiene alguna idea de cómo solucionar este error?
2 answers
Lo descubrí. Como ves en el error de valor, dice No default session is registered. Use 'with DefaultSession(sess)' or pass an explicit session to eval(session=sess)
así que la respuesta que se me ocurrió es pasar una sesión explícita a la evaluación, tal como dice. Aquí es donde hice los cambios.
if i%100 == 0:
train_accuracy = accuracy.eval(session=sess, feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0})
Y
train_step.run(session=sess, feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
Ahora el código funciona bien.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-18 17:09:07
Me encontré con un error similar cuando probé un ejemplo simple de tensorflow.
import tensorflow as tf
v = tf.Variable(10, name="v")
sess = tf.Session()
sess.run(v.initializer)
print(v.eval())
Mi solución es usar sess. as_default (). Por ejemplo, cambié mi código a lo siguiente y funcionó:
import tensorflow as tf
v = tf.Variable(10, name="v")
with tf.Session().as_default() as sess:
sess.run(v.initializer)
print(v.eval())
Otra solución puede ser utilizar InteractiveSession. La diferencia entre InteractiveSession y Session es que una InteractiveSession se convierte en la sesión predeterminada para que pueda ejecutar() o eval() sin llamar explícitamente a la sesión.
v = tf.Variable(10, name="v")
sess = tf.InteractiveSession()
sess.run(v.initializer)
print(v.eval())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-30 06:44:58