, когда мы с помощью кода ниже:Как тензорный поток обрабатывает графа вычислений при выполнении sess.run?
output = NeuralNetwork(x,W)
loss = Loss(output, true_label)
train_op = Optimizer.minimize(loss)
sess.run([loss, train_op], feed_dict=feed)
делает tensorflow вычисления output
дважды, один для вычисления потерь, один для вычисления градиента, или вычислить ouput
только один раз, с использованием вычисленного output
для вычисления loss
и gradient
? Спасибо!
Редактировать. когда 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)
В этом случае, не tensorflow обнаружить наложенное подграф между подграфом output_plus_one
и train_op
, а затем вычислить output
первые?
Во втором вопросе выше. Определяет ли тензорный поток перекрывающийся подграф между подграфом 'output_plus_one' и' train_op', а затем сначала вычисляет 'output'? Спасибо – Keith
'output' только один узел на графике. Его выходные тензоры будут потребляться двумя узлами. Вот и все. Уровень python shadoworflow гарантирует, что для вычисления вашего вывода будет создан только один узел. – yuefengz