다음 코드 세그먼트가 어떻게 실행되는지 혼동합니다. 이 라인 x += 3
기본 그래프의 일부가 아닌 것을
0
3
3
5
8
TensorFlow : 변수를 여러 번 초기화하는 중
인가 :
import tensorflow as tf
x = tf.Variable(0)
init_op = tf.initialize_all_variables()
modify_op = x.assign(5)
with tf.Session() as sess:
sess.run(init_op)
print(sess.run(x))
x += 3
print(sess.run(x))
sess.run(init_op) # Trying to initialize x once again to 0
print(sess.run(x)) # Gives out 3, which leaves me confused.
print(sess.run(modify_op))
print(sess.run(x)) # Gives out 8, even more confusing
이
출력입니까? 아니면 다른 일이 벌어지고있는거야? 어떤 도움을 주시면 감사하겠습니다.
그래프에서 x = x + 3 행을 추가했기 때문에 그 모양이 보입니다. 명확하게하기 위해 : 당신이 정의한 오래된 x는 variable_0 또는 그와 비슷한 이름을 가지며 이제는 새로운 텐서가 더 이상 variable_0이 아니라 variable_1 = variable_0 + 3이됩니다. 그것은 당신이 3 (0 + 3)과 8 (5 + 3)을 얻는 이유를 설명합니다. Variable_0은 여전히 어딘가에 있지만 sess.run (graph.get_tensor_by_name ("variable_0"))을 인쇄하면 변경되지 않았습니다. 그러면 예상 한 결과를 얻을 수 있습니다. 변수의 이름이 무엇인지 알아 내려면 그래프를 그래프로 보아라. – jean
감사합니다. @jean, 저를 도왔습니다. – stark