2017-11-15 5 views
0

다음 tensorflow 그래프 빌딩 코드의 기본 메커니즘을 이해하려고 시도했을 때 3 번째 줄과 4 번째 줄에 대해 혼란스러워했습니다. 나는 + 연산자 오버로딩에서 adder_node가 a와 b 모두에 대한 참조를 빌드한다고 가정했습니다. 그러나 adder_node가 4 행에서 실행될 때 a (a : 3)와 b (b : 3)를 구별하는 메커니즘은 무엇입니까? 말하자면, 자리 표시자가 값으로 채워지고 adder_node에 양쪽 a, b에 대한 참조가있는 경우, 왜 우리는이 매개 변수를 다시 전달해야합니까?Tensorflow 그래프 작성 메커니즘

a = tf.placeholder(tf.float32) 
b = tf.placeholder(tf.float32) 
adder_node = a + b 
print(sess.run(adder_node, {a: 3, b: 4.5})) 
+0

을, 당신이주는 의미 않는' feed_dict'를'sess.run'으로 변경 하시겠습니까? – Sunreef

답변

1

a, badder_node 그래프의 노드이다.

adder_nodeab의 값을 알고 작업을 수행하는 것을 알고 있습니다. 그래프는 다음과 같습니다 : 당신은 당신이 adder_node의 가치를 평가하는 tensorflow을 이야기하고 sess.run(adder_node)을 수행 할 때 (일명 모든 종속 작업을 수행하고 adder_node의 작업을 수행하기 위해)

Your graph

. 그 동작은 feed_dict의 값을 취하도록하므로, 플레이스 홀더 ab의 값을 계산한다 adder_node TF를 계산하기 위해

. 따라서 adder_node을 계산할 때마다 계산할 수 있도록 자리 표시 자에 대한 값을 제공해야합니다.

{a: 3, b: 4.5}은 특별히 매개 변수를 adder_node으로 전달하지 않고 그래프에 매개 변수를 전달합니다.

당신은 그래프에 매개 변수로이 A, B를 통과 코드와 C를 가질 수 있으며 adder_node z는 C 추가

: "다시 이러한 매개 변수를 전달"에 의해

a = tf.placeholder(tf.float32) 
b = tf.placeholder(tf.float32) 
c = tf.placeholder(tf.float32) 
z = a + b 
adder_node = z + c 
print(sess.run(adder_node, {a: 3, b: 4.5, c: 1.5})) 
관련 문제