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')
。。。返回一个对象张量,其类型为:
表示操作的一个输出
张量
是操作
输出之一的符号句柄。
它不保存该操作的输出值,而是
提供在TensorFlowtf.Session
中计算这些值的方法
因此,换句话说,张量求值与操作执行相同,并且上述所有限制也适用
为什么张量有用?一个张量
可以作为输入传递给另一个操作
,从而形成图形。但是在您的例子中,您可以假设两个实体的含义相同。那么:0
?@cmcdragokai很好,命名也有点不同。看见