2016-09-23 4 views
1

Я бегу следующий код:TensorFlow неожиданный результат суммирования

import tensorflow as tf 

sess = tf.InteractiveSession() 
x = tf.placeholder(tf.float32) 
y = tf.Variable(5.0) 

инициализации = tf.initialize_all_variables() sess.run (INIT)

Ниже дает различные результаты:

y = x + y 
for i in xrange(10): 
    print sess.run(y, {x: 1.0}) 

Дает: 6, 6, 6, 6, ...

Сравните с:

for i in xrange(10): 
    y = x + y  
    print sess.run(y, {x: 1.0}) 

гравюр: 6,7,8,9 ...

Почему результат отличается? Я думал, что:

sess.run(y, {x: 1.0}) 

ли: у = х + 1

ответ

3

Каждый раз, когда y = x + y выполняется, вычислительные изменения графа, то есть в первой итерации добавить y = x + y на ваш граф, и так далее.

+0

Вопрос в том, почему первый цикл не меняет значение y? – user6857504

+0

Так работает тензор. Фактически, вычислительный граф - это просто функция, которая имеет некоторые внутренние переменные (y в вашем случае) и может принимать некоторые значения (x) для вычисления других значений в виде комбинаций переменных и заполнителей. Первый для цикла не меняет график, просто оценивая y = y + x, который равен 6 для y = 5 и x = 1. –