Tensorflow图构建机制

时间:2017-11-15 08:14:59

标签: tensorflow graph

当我试图理解以下张量流图构建代码的基本机制时,我对第3行和第4行感到困惑。我假设在+运算符重载的一侧,adder_node构建对a和b的引用。但是,当在第4行执行adder_node时,区分(a:3)和b(b:3)的机制是什么。可以说,如果占位符填充了值,并且adder_node引用了两个a,那么为什么我们必须再次传递这些参数。

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

1 个答案:

答案 0 :(得分:1)

abadder_node是图表中的节点。

adder_node知道获取ab中的值并对它们执行操作。该图如下所示:

Your graph

执行sess.run(adder_node)时,您需要告知tensorflow来评估adder_node的值(也就是执行所有相关操作并执行adder_node的操作)。

为了计算adder_node,tf将计算占位符ab的值,因此他们的操作是从feed_dict中获取值。因此,每次需要计算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}))