TensorFlow: cada iteración en el entrenamiento for-loop es más lenta [duplicado]

Esta pregunta ya tiene una respuesta aquí:

El tiempo de procesamiento se alarga cada vez más después de cada iteración (TensorFlow) 1 respuesta

Estoy entrenando un perceptrón estándar ANN multicapa simple con tres capas ocultas en TensorFlow. Agregué una barra de progreso de texto para poder ver el progreso de iterar a través de las épocas. Lo que encuentro es que el tiempo de procesamiento por iteración aumenta después de las primeras épocas. Aquí hay una captura de pantalla de ejemplo que muestra el aumento con cada iteración:

En este caso, las primeras iteraciones tomaron aproximadamente 1.05s / it y en un 100% tomaron 4.01s / it.

El código relevante se enumera aquí:

# ------------------------- Build the TensorFlow Graph -------------------------

with tf.Graph().as_default():

    (a bunch of statements for specifying the graph)

# --------------------------------- Training ----------------------------------

    sess = tf.InteractiveSession()
    sess.run(tf.initialize_all_variables())

    print "Start Training"

    pbar = tqdm(total = training_epochs)
    for epoch in range(training_epochs):
        avg_cost = 0.0
    batch_iter = 0

    while batch_iter < batch_size:
        train_features = []
        train_labels = []
        batch_segments = random.sample(train_segments, 20)
        for segment in batch_segments:
            train_features.append(segment[0])
            train_labels.append(segment[1])
        sess.run(optimizer, feed_dict={x: train_features, y_: train_labels})
        line_out = "," + str(batch_iter) + "\n"
        train_outfile.write(line_out)
        line_out = ",," + str(sess.run(tf.reduce_mean(weights['h1']), feed_dict={x: train_features, y_: train_labels}))
        line_out += "," + str(sess.run(tf.reduce_mean(weights['h2']), feed_dict={x: train_features, y_: train_labels}))
        line_out += "," + str(sess.run(tf.reduce_mean(weights['h3']), feed_dict={x: train_features, y_: train_labels})) + "\n"
        train_outfile.write(line_out)
        avg_cost += sess.run(cost, feed_dict={x: train_features, y_: train_labels})/batch_size

        batch_iter += 1

    pbar.update(1)  # Increment the progress bar by one

train_outfile.close()
print "Completed training"

Al buscar stackoverflow, encontréEl tiempo de procesamiento se alarga cada vez más después de cada iteración. donde alguien más también estaba teniendo problemas con cada iteración que tardaba más que la anterior. Sin embargo, creo que el mío puede ser diferente ya que claramente estaban agregando operaciones al gráfico usando declaraciones como esta:

distorted_image = tf.image.random_flip_left_right(image_tensor)

Si bien soy nuevo en TensorFlow, no creo que esté cometiendo el mismo error porque las únicas cosas en mi bucle son llamadas sess.run ().

Cualquier ayuda es muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta