Tensorflow:按名称获取张量与按名称获取操作的区别?

Tensorflow:按名称获取张量与按名称获取操作的区别?,tensorflow,deep-learning,tensorflow-serving,Tensorflow,Deep Learning,Tensorflow Serving,答案是一个返回一个运算,而另一个返回一个张量。从名称和文档中可以明显看出这一点。但是,假设我执行以下操作: logits = tf.add(tf.matmul(inputs, weights), biases, name='logits') 我遵循中描述的模式。我应该把它恢复为一个运算还是一个张量?我担心,如果我把它恢复为张量,我只会得到logits的最后计算值;尽管如此,这篇文章似乎暗示没有区别,或者我应该使用get\u tensor\u by\u name。其思想是计算一组新输入的logi

答案是一个返回一个运算,而另一个返回一个张量。从名称和文档中可以明显看出这一点。但是,假设我执行以下操作:

logits = tf.add(tf.matmul(inputs, weights), biases, name='logits')

我遵循中描述的模式。我应该把它恢复为一个运算还是一个张量?我担心,如果我把它恢复为张量,我只会得到logits的最后计算值;尽管如此,这篇文章似乎暗示没有区别,或者我应该使用
get\u tensor\u by\u name
。其思想是计算一组新输入的logit,然后做出相应的预测。

简短回答:您可以同时使用,
get\u operation\u by\u name()
get\u tensor\u by\u name()
。长答覆:

tf.操作
当你打电话的时候

op = graph.get_operation_by_name('logits')
。。。它返回类型的实例,该实例是计算图中的一个节点,它对其输入执行一些操作并生成一个或多个输出。在本例中,它是一个
加上
操作

您可以在会话中始终评估op,如果此op需要输入一些placehoder值,引擎将强制您提供这些值。某些操作(例如读取变量)没有任何依赖关系,可以在没有占位符的情况下执行

在您的情况下,(我假设)
logits
是从输入占位符
x
计算的,因此
logits
没有特定的
x
就没有任何值

tf.张量
另一方面,打电话

tensor = graph.get_tensor_by_name('logits:0')
。。。返回一个对象
张量
,其类型为:

表示
操作的一个输出

张量
操作
输出之一的符号句柄。 它不保存该操作的输出值,而是 提供在TensorFlow
tf.Session
中计算这些值的方法

因此,换句话说,张量求值与操作执行相同,并且上述所有限制也适用


为什么
张量
有用?一个
张量
可以作为输入传递给另一个
操作
,从而形成图形。但是在您的例子中,您可以假设两个实体的含义相同。

那么
:0
?@cmcdragokai很好,命名也有点不同。看见