Tensorflow while_loop para entrenamiento

En mi problema, necesito ejecutar GD con 1 ejemplo de datos en cada paso de entrenamiento. Es un problema conocido que session.run () tiene sobrecarga y, por lo tanto, es demasiado largo para entrenar el modelo. En un intento por evitar la sobrecarga, intenté usar while_loop y entrenar el modelo en todos los datos con una llamada run (). Pero el enfoque no funciona y train_op no ejecuta ni siquiera los. Debajo de un simple ejemplo de lo que estoy haciendo:

data = [k*1. for k in range(10)]
tf.reset_default_graph()

i = tf.Variable(0, name='loop_i')
q_x = tf.FIFOQueue(100000, tf.float32)
q_y = tf.FIFOQueue(100000, tf.float32)

x = q_x.dequeue()
y = q_y.dequeue()
w = tf.Variable(0.)
b = tf.Variable(0.)
loss = (tf.add(tf.mul(x, w), b) - y)**2

gs = tf.Variable(0)

train_op = tf.train.GradientDescentOptimizer(0.05).minimize(loss, global_step=gs)

s = tf.Session()
s.run(tf.initialize_all_variables())

def cond(i):
    return i < 10

def body(i):
    return tf.tuple([tf.add(i, 1)], control_inputs=[train_op])


loop = tf.while_loop(cond, body, [i])

for _ in range(1):
    s.run(q_x.enqueue_many((data, )))
    s.run(q_y.enqueue_many((data, )))

s.run(loop)
s.close()

¿Qué estoy haciendo mal? ¿O hay otra solución de este problema con gastos generales demasiado caros?

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta