Tensorflow 张量流运算和张量运算的区别?

Tensorflow 张量流运算和张量运算的区别?,tensorflow,Tensorflow,我对张量流运算和张量对象之间的区别感到困惑。更具体地说,它们之间的关系是什么,它们背后的设计理念是什么 x = tf.constant([[37.0, -23.0], [1.0, 4.0]]) w = tf.Variable(tf.random_uniform([2, 2])) y = tf.matmul(x, w) output = tf.nn.softmax(y, name="output") output <tf.Tensor 'output_7:0' shape=(2, 2) d

我对张量流运算和张量对象之间的区别感到困惑。更具体地说,它们之间的关系是什么,它们背后的设计理念是什么

x = tf.constant([[37.0, -23.0], [1.0, 4.0]])
w = tf.Variable(tf.random_uniform([2, 2]))
y = tf.matmul(x, w)
output = tf.nn.softmax(y, name="output")

output
<tf.Tensor 'output_7:0' shape=(2, 2) dtype=float32>

output2 = tf.get_default_graph().get_operation_by_name("output")
output2
<tf.Operation 'output' type=Softmax>
x=tf.常数([[37.0,-23.0],[1.0,4.0]]
w=tf.Variable(tf.random_uniform([2,2]))
y=tf.matmul(x,w)
输出=tf.nn.softmax(y,name=“输出”)
输出
output2=tf.get_default_graph().get_operation_by_name(“输出”)
输出2
如果我想将output2传递给sess.run([output2]),我将一无所获。有没有办法将output2转换为output


我是Pytork的用户,Pytork中的运算和张量的类比是什么

我没有使用PyTorch,但您可以假设它是一个层类的方法和变量。因此,运算是一种方法,张量就像是可以存储数据的变量。因此,当您运行
sess.run([output2])
时,您试图访问方法的值,而不是变量

要从层的名称访问张量,可以使用以下函数:

output2=tf.get\u default\u graph().get\u tensor\u by\u name(“output:0”)

使用
:0
,因为它是张量的第一个实例。如果创建同一层的多个实例,它将被索引为
:1、:2
,依此类推


编辑:另一件需要注意的事情是,在tensorflow
sess.run([output])
中,提取输出值,而不是将其输入到图形中。通过使用提要或提要字典将值馈送到图形。

Awesome!有没有办法将“output:0”重命名为更有意义的名称?在Softmax层中定义name参数时,可以使用namescope和更好的层名称。但是
:0
需要存在,因为底层API需要它来编制索引。此外,正确命名层也是一种很好的做法,因为当您将tensorflow模型部署到手机和其他无法通过变量访问层的应用程序时,这些层非常重要。您可以使用
tf。将\u添加到\u集合
tf。将\u添加到\u集合
实际上看起来是一种更好的方法。谢谢@AbhishekMishra,我今天学到了一些新东西!