Problemas al implementar una puerta XOR con redes neuronales en Tensorflow

Quiero hacer una red neuronal trivial, solo debería implementar la puerta XOR. Estoy usando la biblioteca TensorFlow, en python. Para una puerta XOR, la única información con la que entreno es la tabla de verdad completa, eso debería ser suficiente, ¿verdad? La optimización excesiva es lo que esperaré que suceda muy rápidamente. El problema con el código es que elpesas ysesgos no actualices. De alguna manera, todavía me da una precisión del 100% con cero para los sesgos y los pesos.

x = tf.placeholder("float", [None, 2])
W = tf.Variable(tf.zeros([2,2]))
b = tf.Variable(tf.zeros([2]))

y = tf.nn.softmax(tf.matmul(x,W) + b)

y_ = tf.placeholder("float", [None,1])


print "Done init"

cross_entropy = -tf.reduce_sum(y_*tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.75).minimize(cross_entropy)

print "Done loading vars"

init = tf.initialize_all_variables()
print "Done: Initializing variables"

sess = tf.Session()
sess.run(init)
print "Done: Session started"

xTrain = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
yTrain = np.array([[1], [0], [0], [0]])


acc=0.0
while acc<0.85:
  for i in range(500):
      sess.run(train_step, feed_dict={x: xTrain, y_: yTrain})


  print b.eval(sess)
  print W.eval(sess)


  print "Done training"


  correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

  accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

  print "Result:"
  acc= sess.run(accuracy, feed_dict={x: xTrain, y_: yTrain})
  print acc

B0 = b.eval(sess)[0]
B1 = b.eval(sess)[1]
W00 = W.eval(sess)[0][0]
W01 = W.eval(sess)[0][1]
W10 = W.eval(sess)[1][0]
W11 = W.eval(sess)[1][1]

for A,B in product([0,1],[0,1]):
  top = W00*A + W01*A + B0
  bottom = W10*B + W11*B + B1
  print "A:",A," B:",B
  # print "Top",top," Bottom: ", bottom
  print "Sum:",top+bottom

Estoy siguiendo el tutorial dehttp://tensorflow.org/tutorials/mnist/beginners/index.md#softmax_regressions y en el ciclo for final estoy imprimiendo los resultados de la matriz (como se describe en el enlace).

¿Alguien puede señalar mi error y qué debo hacer para solucionarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta