TensorFlow: Cada iteração no treinamento para loop mais lento [duplicado]
Esta pergunta já tem uma resposta aqui:
O tempo de processamento é cada vez maior após cada iteração (TensorFlow) 1 respostaEstou treinando um ANP perceptron multicamadas simples e padrão com três camadas ocultas no TensorFlow. Adicionei uma barra de progresso de texto para poder assistir ao progresso da iteração pelas épocas. O que estou descobrindo é que o tempo de processamento por iteração aumenta após as primeiras épocas. Aqui está um exemplo de captura de tela mostrando o aumento a cada iteração:
Nesse caso, as primeiras iterações demoraram aproximadamente 1,05s / it e em 100% estavam em 4,01s / it.
O código relevante está listado aqui:
# ------------------------- 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"
Ao pesquisar stackoverflow, encontreiO tempo de processamento é cada vez maior após cada iteração onde outra pessoa também estava tendo problemas, com cada iteração demorando mais que a última. No entanto, acredito que o meu pode ser diferente, pois eles adicionavam claramente operações ao gráfico usando declarações como estas:
distorted_image = tf.image.random_flip_left_right(image_tensor)
Embora eu seja novo no TensorFlow, não acredito que esteja cometendo o mesmo erro, porque as únicas coisas no meu loop são chamadas sess.run ().
Qualquer ajuda é muito apreciada.