回答here说一个人返回一个操作,而另一个人返回一个张量。从名称和文档中可以看出这一点。但是,假设我执行以下操作:
logits = tf.add(tf.matmul(inputs, weights), biases, name='logits')
我遵循Tensorflow Mechanics 101中描述的模式。我应该将其恢复为手术还是张力?我担心如果我将其恢复为张量,我将只获得logits的最后计算值;尽管如此,后here,似乎表明没有区别或我应该只使用get_tensor_by_name
。我们的想法是计算一组新输入的logits,然后相应地进行预测。
简短的回答:你可以同时使用get_operation_by_name()
和get_tensor_by_name()
。答案很长:
tf.Operation
你打电话的时候
op = graph.get_operation_by_name('logits')
...它返回一个tf.Operation
类型的实例,它是计算图中的一个节点,它在其输入上执行一些操作并产生一个或多个输出。在这种情况下,它是一个plus
操作。
人们可以随时评估会话中的操作,如果此操作需要输入一些placehoder值,引擎将强制您提供它们。一些操作,例如读取变量,没有任何依赖关系,并且可以在没有占位符的情况下执行。
在你的情况下,(我假设)logits
是从输入占位符x
计算的,所以logits
没有特定的x
没有任何值。
tf.Tensor
另一方面,打电话
tensor = graph.get_tensor_by_name('logits:0')
...返回一个对象tensor
,其类型为tf.Tensor
:
代表
Operation
的一个输出。
Tensor
是Operation
输出之一的象征性句柄。它不保存该操作的输出值,而是提供在TensorFlowtf.Session
中计算这些值的方法。
因此,换句话说,张量评估与操作执行相同,并且上述所有限制也适用。
为什么Tensor
有用?可以将Tensor
作为输入传递给另一个Operation
,从而形成图形。但在您的情况下,您可以假设两个实体的含义相同。