执行sess.run时,tensorflow如何处理计算图?

时间:2017-02-23 05:17:09

标签: tensorflow

当我们使用下面的代码时:

output = NeuralNetwork(x,W)
loss = Loss(output, true_label)
train_op = Optimizer.minimize(loss)
sess.run([loss, train_op], feed_dict=feed)

张量流计算output两次,一个用于计算损失,一个用于计算梯度,或计算ouput一次,使用计算的output来计算lossgradient? 谢谢!

修改。 当tensorflow运行以下代码时:

output = NeuralNetwork(x,W)
ouput_plus_one = output+1
loss = Loss(output, true_label)
train_op = Optimizer.minimize(loss)
sess.run([output_plus_one, train_op], feed_dict=feed)

在这种情况下,张量流是否检测到output_plus_onetrain_op的子图之间的重叠子图,然后先计算output

1 个答案:

答案 0 :(得分:1)

output只会计算一次,然后保留在内存中,直到后向传递消耗它为止。

在TensorFlow中可以进行一些优化,如果张量计算速度很快但很大并且会在内存中存在很长时间,我们可能会丢弃输出并在下次需要时重新计算它。 / p>