例如,当我们将变量c
计算为result = sess.run(c)
时,TF是否仅计算计算c
所需的输入或更新完整计算图的所有变量?
另外,我似乎无法做到这一点:
c = c*a*b
因为即使将uninitialized variable
初始化为c
,我仍然遇到tf.Variable(tf.constant(1))
错误。有什么建议吗?
答案 0 :(得分:0)
由于TF的Python代码仅设置图形,该图形实际上是由所有ops
的本机实现执行的,因此需要在此底层环境中执行变量。这通过执行两个操作来实现 - 用于本地和全局变量初始化:
session.run(tf.global_variables_initializer(), tf.local_variables_initializer())
关于原始问题 - 据我所知 - 是的,它会计算所有图表,并且它要求您提供占位符,即使执行的操作(在会话中)不依赖于它们。
答案 1 :(得分:0)
这个问题相当老,但是我会回答,以防万一有人再次遇到这个问题。
要回答第一个问题,不。 Tensorflow仅执行执行传递给它的操作所需的内容。来自tensorflow.org:
tf.Session.run要求您指定获取的列表,这些获取确定返回值,并且可以是tf.Operation,tf.Tensor或类似张量的类型,例如tf.Variable。这些提取操作决定了整个tf的哪个子图。必须执行Graph才能产生结果
要回答问题的第二部分,必须先初始化变量,然后才能使用它们(请参见下面的链接)。最简单的方法是运行tensorflow.global_variables_initializer()
https://www.tensorflow.org/guide/variables#initializing_variables