title: Tensorflow: Cannot interpret feed_dict key as Tensor
body: <p>I am trying to build a neural network model with one hidden layer (1024 nodes). The hidden layer is nothing but a relu unit. I am also processing the input data in batches of 128. </p>
  
  <p>The inputs are images of size 28 * 28. In the following code I get the error in line</p>
  
  <pre><code>_, c = sess.run([optimizer, loss], feed_dict={x: batch_x, y: batch_y})
  Error: TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("Placeholder_64:0", shape=(128, 784), dtype=float32) is not an element of this graph.
  </code></pre>
  
  <p>Here is the code I have written</p>
  
  <pre class="lang-py prettyprint-override"><code>#Initialize
  
  batch_size = 128
  
  layer1_input = 28 * 28
  hidden_layer1 = 1024
  num_labels = 10
  num_steps = 3001
  
  #Create neural network model
  def create_model(inp, w, b):
      layer1 = tf.add(tf.matmul(inp, w['w1']), b['b1'])
      layer1 = tf.nn.relu(layer1)
      layer2 = tf.matmul(layer1, w['w2']) + b['b2']
      return layer2
  
  #Initialize variables
  x = tf.placeholder(tf.float32, shape=(batch_size, layer1_input))
  y = tf.placeholder(tf.float32, shape=(batch_size, num_labels))
  
  w = {
  'w1': tf.Variable(tf.random_normal([layer1_input, hidden_layer1])),
  'w2': tf.Variable(tf.random_normal([hidden_layer1, num_labels]))
  }
  b = {
  'b1': tf.Variable(tf.zeros([hidden_layer1])),
  'b2': tf.Variable(tf.zeros([num_labels]))
  }
  
  init = tf.initialize_all_variables()
  train_prediction = tf.nn.softmax(model)
  
  tf_valid_dataset = tf.constant(valid_dataset)
  tf_test_dataset = tf.constant(test_dataset)
  
  model = create_model(x, w, b)
  
  loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(model, y))    
  optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
  
  #Process
  with tf.Session(graph=graph1) as sess:
      tf.initialize_all_variables().run()
      total_batch = int(train_dataset.shape[0] / batch_size)
  
      for epoch in range(num_steps):    
          loss = 0
          for i in range(total_batch):
              batch_x, batch_y = train_dataset[epoch * batch_size:(epoch+1) * batch_size, :], train_labels[epoch * batch_size:(epoch+1) * batch_size,:]
  
              _, c = sess.run([optimizer, loss], feed_dict={x: batch_x, y: batch_y})
              loss = loss + c
          loss = loss / total_batch
          if epoch % 500 == 0:
              print ("Epoch :", epoch, ". cost = {:.9f}".format(avg_cost))
              print("Minibatch accuracy: %.1f%%" % accuracy(predictions, batch_labels))
              valid_prediction = tf.run(tf_valid_dataset, {x: tf_valid_dataset})
              print("Validation accuracy: %.1f%%" % accuracy(valid_prediction.eval(), valid_labels))
      test_prediction = tf.run(tf_test_dataset,  {x: tf_test_dataset})
      print("TEST accuracy: %.1f%%" % accuracy(test_prediction.eval(), test_labels))
  </code></pre>