Tensorflow: la utilización de GPU casi siempre es del 0%

Estoy usando tensorflow con GPU Titan-X y he notado que, cuando ejecuto el ejemplo CIFAR10, elVolatile GPU-utilization es bastante constante alrededor del 30%, mientras que cuando entreno mi propio modelo, elVolatile GPU-utilization está lejos de ser constante, casi siempre es del 0% y aumenta al 80/90% antes de volver al 0%, una y otra vez.

Pensé que este comportamiento se debía a la forma en que estaba alimentando los datos a la red (estaba recuperando los datos después de cada paso, lo que me llevó un tiempo). Pero después de implementar una cola para alimentar los datos y evitar esta latencia entre los pasos, el problema persistió (consulte a continuación el sistema de colas).

¿Alguna idea?

batch = 128 # size of the batch
x = tf.placeholder("float32", [None, n_steps, n_input])
y = tf.placeholder("float32", [None, n_classes])

# with a capacity of 100 batches, the bottleneck should not be the data feeding
queue = tf.RandomShuffleQueue(capacity=100*batch,
                  min_after_dequeue=80*batch,
                  dtypes=[tf.float32, tf.float32],
                  shapes=[[n_steps, n_input], [n_classes]])
enqueue_op = queue.enqueue_many([x, y])
X_batch, Y_batch = queue.dequeue_many(batch)

sess = tf.Session()

def load_and_enqueue(data):
    while True:
        X, Y = data.get_next_batch(batch)
        sess.run(enqueue_op, feed_dict={x: X, y: Y})

train_thread = threading.Thread(target=load_and_enqueue, args=(data))
train_thread.daemon = True
train_thread.start()

for _ in xrange(max_iter):
    sess.run(train_op)

Respuestas a la pregunta(1)

Su respuesta a la pregunta