2017-09-18 5 views
1

Je cours tensorflow version 1.3.0 sur Ubuntu 16.04.Je joue avec un code où mon L'intention principale est de visualiser un graphique sur tensorboard. Tout en exécutant le code tout semble être parfaitement bien lorsque le code est exécuté pour la toute première fois. Cependant, après que lorsque je courais le code pour la 2ème fois que je reçois cette erreur:Erreur Tensorflow: InvalidArgumentError: Vous devez alimenter une valeur pour le tenseur d'espace réservé 'Placeholder' avec dtype float et forme [?: 784]]

InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float and shape [?,784] 
[[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[?,784], _device="/job:localhost/replica:0/task:0/cpu:0"]()]] 

Voici le retraçage:

InvalidArgumentError Traceback (most recent call last) 
<ipython-input-26-149c9b9d8878> in <module>() 
11    sess.run(optimizer, feed_dict={x: batch_xs, y: 
batch_ys}) 
12    avg_cost += sess.run(cost_function, feed_dict={x: 
batch_xs, y: batch_ys})/total_batch 
---> 13    summary_str = sess.run(merged_summary_op, 
feed_dict={x: batch_xs, y: batch_ys}) 
14    summary_writer.add_summary(summary_str, 
iteration*total_batch + i) 
15   if iteration % display_step == 0: 

/home/niraj/anaconda2/lib/python2.7/site- 
packages/tensorflow/python/client/session.pyc in run(self, fetches, 
feed_dict, options, run_metadata) 
893  try: 
894  result = self._run(None, fetches, feed_dict, options_ptr, 
--> 895       run_metadata_ptr) 
896  if run_metadata: 
897   proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) 

InvalidArgumentError      Traceback (most recent call 
last) 
<ipython-input-26-149c9b9d8878> in <module>() 
11    sess.run(optimizer, feed_dict={x: batch_xs, y: 
batch_ys}) 
12    avg_cost += sess.run(cost_function, feed_dict={x: 
batch_xs, y: batch_ys})/total_batch 
---> 13    summary_str = sess.run(merged_summary_op, 
feed_dict={x: batch_xs, y: batch_ys}) 
14    summary_writer.add_summary(summary_str, 
iteration*total_batch + i) 
15   if iteration % display_step == 0: 

/home/niraj/anaconda2/lib/python2.7/site- 
packages/tensorflow/python/client/session.pyc in run(self, fetches, 
feed_dict, options, run_metadata) 
893  try: 
894  result = self._run(None, fetches, feed_dict, options_ptr, 
--> 895       run_metadata_ptr) 
896  if run_metadata: 
897   proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) 

/home/niraj/anaconda2/lib/python2.7/site- 
packages/tensorflow/python/client/session.pyc in _run(self, handle, 
fetches, feed_dict, options, run_metadata) 
1122  if final_fetches or final_targets or (handle and 
feed_dict_tensor): 
1123  results = self._do_run(handle, final_targets, 
final_fetches, 
-> 1124        feed_dict_tensor, options, 
run_metadata) 
1125  else: 
1126  results = [] 

/home/niraj/anaconda2/lib/python2.7/site- 
packages/tensorflow/python/client/session.pyc in _do_run(self, handle, 
target_list, fetch_list, feed_dict, options, run_metadata) 
1319  if handle is None: 
1320  return self._do_call(_run_fn, self._session, feeds, 
fetches, targets, 
-> 1321       options, run_metadata) 
1322  else: 
1323  return self._do_call(_prun_fn, self._session, handle, 
feeds, fetches) 

/home/niraj/anaconda2/lib/python2.7/site- 
packages/tensorflow/python/client/session.pyc in _do_call(self, fn, 
*args) 
1338   except KeyError: 
1339   pass 
-> 1340  raise type(e)(node_def, op, message) 
1341 
1342 def _extend_graph(self): 

est le code ici:

import tensorflow as tf 
from tensorflow.examples.tutorials.mnist import input_data 
mnist = input_data.read_data_sets("/home/niraj/Documents/artificial 
intelligence/projects/tensorboard", one_hot=True) 

learning_rate = 0.01 
training_iteration = 200 
batch_size = 100 
display_step = 2 

# TF graph input 
x = tf.placeholder('float32', [None, 784]) # mnist data image of shape 
28*28=784 
y = tf.placeholder('float32',[None, 10]) # 0-9 digits recognition => 
10 classes 

W = tf.Variable(tf.zeros([784, 10])) 
b = tf.Variable(tf.zeros([10])) 

with tf.name_scope("Wx_b") as scope: 
    model = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax 

w_h = tf.summary.histogram("weights", W) 
b_h = tf.summary.histogram("biases", b) 

with tf.name_scope("cost_function") as scope: 
    cost_function = -tf.reduce_sum(y*tf.log(model)) 
tf.summary.scalar("cost_function", cost_function) 

with tf.name_scope("train") as scope: 
    optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost_function) 

init = tf.global_variables_initializer() 
merged_summary_op = tf.summary.merge_all() 
with tf.Session() as sess: 
    sess.run(init) 
summary_writer = tf.summary.FileWriter('/home/niraj/Documents/artificial intelligence/projects/tensorboard', graph=sess.graph) 
for iteration in range(training_iteration): 
    avg_cost = 0 
    total_batch = int(mnist.train.num_examples/batch_size) 
    for i in range(total_batch): 
     batch_xs, batch_ys = mnist.train.next_batch(batch_size) 
     sess.run(optimizer, feed_dict={x: batch_xs, y: batch_ys}) 
     avg_cost += sess.run(cost_function, feed_dict={x: batch_xs, y: batch_ys})/total_batch 
     summary_str = sess.run(merged_summary_op, feed_dict={x: batch_xs, y: batch_ys})  
     summary_writer.add_summary(summary_str, iteration*total_batch + i) 
    if iteration % display_step == 0: 
     print "Iteration:", '%04d' % (iteration + 1), "cost=", "{:.9f}".format(avg_cost) 


print "Tuning completed!" 
predictions = tf.equal(tf.argmax(model, 1), tf.argmax(y, 1)) 
accuracy = tf.reduce_mean(tf.cast(predictions, "float")) 
print "Accuracy:", accuracy.eval({x: mnist.test.images, y: mnist.test.labels}) 

Rappelez-vous Ce code fonctionne parfaitement bien quand je le lance pour la première fois. Sur la 2ème manche, il donne l'erreur. Cependant, quand je ferme le portable et mon terminal jupyter, puis le rouvrir et le redémarrer, il va à nouveau n sans aucune erreur et à la deuxième exécution, il donne l'erreur ci-dessus.

Répondre

1

J'ai le même problème, et j'ai jusqu'à présent constaté que l'erreur ne se produit pas lorsque je supprime l'opération de résumé. Je mettrai à jour ce si je trouve un moyen de le faire fonctionner avec le résumé ...

MISE À JOUR:

je fixe ce en suivant la suggestion ici: Error with feed values for placeholders when running the merged summary op

I remplacé tf.summary.merge_all avec tf.summary.merge([summary_var1, summary_var2])

Un moyen plus simple de résoudre ce problème est d'appeler tf.reset_default_graph() à la fin de votre boucle, avant de recommencer à vous entraîner.

+0

Oui. tf.reset_default_graph() fonctionne. En fait, je lisais ce livre l'autre jour 'Hands on with scikit-learn et tensorflow' et je suis tombé sur l'un des conseils qui mentionnait clairement "Dans Jupyter (ou dans un shell Python), il est courant d'exécuter les mêmes commandes plus Par conséquent, vous pouvez vous retrouver avec un graphique par défaut contenant de nombreux noeuds dupliqués.Une solution consiste à redémarrer le noyau Jupyter (ou le shell Python), mais une solution plus commode est de simplement réinitialiser le graphique par défaut en exécutant tf.reset_default_graph(). " – clarky