Error al calcular resúmenes en TensorFlow
Estoy tratando de usar TensorFlow para producir resúmenes y visualizarlos usando TensorBoard. Sin embargo, recibo un error (InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_1' with dtype float
) Qué? No entiendo.
Esta es la fuente completa de mi programa:
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import tensorflow as tf
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
_ = tf.histogram_summary("weights", W)
_ = tf.histogram_summary("biases", b)
_ = tf.histogram_summary("y", y)
y_ = tf.placeholder(tf.float32, [None, 10])
with tf.name_scope("xent") as scope:
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
_ = tf.scalar_summary("cross entropy", cross_entropy)
with tf.name_scope("train") as scope:
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
with tf.name_scope("test") as scope:
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
_ = tf.scalar_summary("accuracy", accuracy)
merged = tf.merge_all_summaries()
writer = tf.train.SummaryWriter("/tmp/mnist_nn", sess.graph_def)
for i in range(1000):
if (i % 10) == 0:
feed = {x: mnist.test.images, y_: mnist.test.labels}
result = sess.run([merged, accuracy], feed_dict=feed)
summary_str = result[0]
acc = result[1]
print("Accuracy at step %s: %s" % (i, acc))
else:
batch_xs, batch_ys = mnist.train.next_batch(100)
feed = {x: batch_xs, y_: batch_ys}
sess.run(train_step, feed_dict=feed)
print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels}))
Sin embargo, cuando intento ejecutar el código anterior, aparece el siguiente error:
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
<ipython-input-23-584a7bc91816> in <module>()
39 if (i % 10) == 0:
40 feed = {x: mnist.test.images, y_: mnist.test.labels}
---> 41 result = sess.run([merged, accuracy], feed_dict=feed)
42 summary_str = result[0]
43 acc = result[1]
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tensorflow/python/client/session.pyc in run(self, fetches, feed_dict)
366
367 # Run request and get response.
--> 368 results = self._do_run(target_list, unique_fetch_targets, feed_dict_string)
369
370 # User may have fetched the same tensor multiple times, but we
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tensorflow/python/client/session.pyc in _do_run(self, target_list, fetch_list, feed_dict)
442 # pylint: disable=protected-access
443 raise errors._make_specific_exception(node_def, op, error_message,
--> 444 e.code)
445 # pylint: enable=protected-access
446 six.reraise(e_type, e_value, e_traceback)
InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_1' with dtype float
[[Node: Placeholder_1 = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
Caused by op u'Placeholder_1', defined at:
Parece por el error que un marcador de posición en mi fuente no ha recibido un valor apropiado. Por lo que puedo decir, estoy alimentando valores para todos los marcadores de posición (x
yy_
)
Si lo necesita, agregaré el registro completo a este problema.
También descubrí que cuando busco mnist por primera vez, funciona (con el siguiente resultado) pero aún no se produce la visualización de TensorBoard:
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting MNIST_data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
Tensor("MergeSummary/MergeSummary:0", shape=TensorShape([]), dtype=string)
merged
Accuracy at step 0: 0.098
Accuracy at step 10: 0.7404
Accuracy at step 20: 0.8041
Accuracy at step 30: 0.814 ...