title: No gradients provided for any variable
body: <pre><code>import tensorflow as tf
  import numpy as np
  import matplotlib.pyplot as plt
  
  Nclass = 500
  D = 2
  M = 3
  K = 3
  
  X1 = np.random.randn(Nclass, D) + np.array([0, -2])
  X2 = np.random.randn(Nclass, D) + np.array([2, 2])
  X3 = np.random.randn(Nclass, D) + np.array([-2, 2])
  X = np.vstack ([X1, X2, X3]).astype(np.float32)
  
  Y = np.array([0]*Nclass + [1]*Nclass + [2]*Nclass)
  
  plt.scatter(X[:,0], X[:,1], c=Y, s=100, alpha=0.5)
  plt.show()
  
  N = len(Y)
  
  T = np.zeros((N, K))
  for i in range(N):
      T[i, Y[i]] = 1
  
  def init_weights(shape):
      return tf.Variable(tf.random_normal(shape, stddev=0.01))
  
  def forward(X, W1, b1, W2, b2):
      Z = tf.nn.sigmoid(tf.matmul(X, W1) + b1)
      return tf.matmul(Z, W2) + b2
  
  tfX = tf.placeholder(tf.float32, [None, D])
  tfY = tf.placeholder(tf.float32, [None, K])
  
  W1 = init_weights([D, M])
  b1 = init_weights([M])
  W2 = init_weights([M, K])
  b2 = init_weights([K])
  
  py_x = forward(tfX, W1, b1, W2, b2)
  
  cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=py_x, logits=T))
  
  train_op = tf.train.GradientDescentOptimizer(0.05).minimize(cost)
  predict_op = tf.argmax(py_x, 1)
  
  sess = tf.Session()
  inti = tf.initizalize_all_variables()
  
  for i in range(1000):
      sess.run(train_op, feed_dict={tfX: X, tfY: T})
      pred = sess.run(predict_op, feed_dict={tfX: X, tfY: T})
      if i % 10 == 0:
          print(np.mean(Y == pred))
  </code></pre>
  
  <p>I have a little issue :</p>
  
  <pre><code>Traceback (most recent call last):
    File "test.py", line 45, in &lt;module&gt;
      train_op = tf.train.GradientDescentOptimizer(0.05).minimize(cost)
    File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/optimizer.py", line 322, in minimize
      ([str(v) for _, v in grads_and_vars], loss))
  ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["&lt;tf.Variable 'Variable:0' shape=(2, 3) dtype=float32_ref&gt;", "&lt;tf.Variable 'Variable_1:0' shape=(3,) dtype=float32_ref&gt;", "&lt;tf.Variable 'Variable_2:0' shape=(3, 3) dtype=float32_ref&gt;", "&lt;tf.Variable 'Variable_3:0' shape=(3,) dtype=float32_ref&gt;"] and loss Tensor("Mean:0", shape=(), dtype=float64).
  </code></pre>
  
  <p>It is unclear what I have to do here. Could anyone be able to help me at this point?</p>