How to feed a placeholder?
Question: I am trying to implement a simple feed forward network. However, I can't
figure out how to feed a `Placeholder`. This example:

    
    
    import tensorflow as tf
    
    num_input  = 2
    num_hidden = 3
    num_output = 2
    
    x  = tf.placeholder("float", [num_input, 1])
    W_hidden = tf.Variable(tf.zeros([num_hidden, num_input]))
    W_out    = tf.Variable(tf.zeros([num_output, num_hidden]))
    b_hidden = tf.Variable(tf.zeros([num_hidden]))
    b_out    = tf.Variable(tf.zeros([num_output]))
    
    h = tf.nn.softmax(tf.matmul(W_hidden,x) + b_hidden)
    
    sess = tf.Session()
    
    with sess.as_default():
        print h.eval()
    

Gives me the following error:

    
    
      ...
        results = self._do_run(target_list, unique_fetch_targets, feed_dict_string)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 419, in _do_run
        e.code)
    tensorflow.python.framework.errors.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float and shape dim { size: 2 } dim { size: 1 }
         [[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[2,1], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
    Caused by op u'Placeholder', defined at:
      File "/home/sfalk/workspace/SemEval2016/java/semeval2016-python/slot1_tf.py", line 8, in <module>
        x  = tf.placeholder("float", [num_input, 1])
      ...
    

I have tried

    
    
    tf.assign([tf.Variable(1.0), tf.Variable(1.0)], x)
    tf.assign([1.0, 1.0], x)
    

but that does not work apparently.


Answer: To feed a placeholder, you use the `feed_dict` argument to `Session.run()` (or
`Tensor.eval()`). Let's say you have the following graph, with a placeholder:

    
    
    x = tf.placeholder(tf.float32, shape=[2, 2])
    y = tf.constant([[1.0, 1.0], [0.0, 1.0]])
    z = tf.matmul(x, y)
    

If you want to evaluate `z`, you must feed a value for `x`. You can do this as
follows:

    
    
    sess = tf.Session()
    print sess.run(z, feed_dict={x: [[3.0, 4.0], [5.0, 6.0]]})
    

For more information, see the [documentation on
feeding](http://tensorflow.org/how_tos/reading_data/index.html#Feeding).

