InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor

以下两种方式都不好使用:目前只是找到原因,等我找到方案再来完善。

From your error message, it looks like you are using IPython. One pitfall when using IPython to build a TensorFlow model is that functions like tf.merge_all_summaries() will remember every summary created in the current session, including cells that failed with an error. This is a result of TensorFlow using a default graph to collect all of the operations, summaries, etc. that are created in a process, unless you specify the graph explicitly. I suspect that your call to tf.merge_all_summaries() is returning more than the three histogram summaries that you created in your code, and the older ones will have a dependency on a previously created placeholder.

There are two main ways that you could fix that. The simplest is to explicitly merge the summaries, rather than using tf.merge_all_summaries():

weights_summary = tf.histogram_summary("weights", W)
biases_summary = tf.histogram_summary("biases", b)
y_summary = tf.histogram_summary("y", y)

merged = tf.merge_summary([weights_summary, biases_summary, y_summary])

An alternative would be to set an explicit default graph before constructing your model. This is awkward if you want to split your model across multiple IPython cells, but should also work:

# Sets a new default graph, and stores it in `g`.
with tf.Graph().as_default() as g:  

    x = tf.placeholder(tf.float32, [None, 784])
    # ...

    # Summaries are added to `g`.
    _ = tf.histogram_summary("weights", W)
    _ = tf.histogram_summary("biases", b)
    _ = tf.histogram_summary("y", y)

    # ...

    # `merged` contains only summaries from `g`.
    merged = tf.merge_all_summaries()

    # ...

你可能感兴趣的:(InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor)