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) dtype=float32>

output2 = tf.get_default_graph().get_operation_by_name("output")
output2
<tf.Operation 'output' type=Softmax>

如果我想将output2传递给sess.run([output2]),我将得到None。有没有办法将output2转换为output?

我是 PyTorch 用户,PyTorch 中的操作和张量有何类比?

最佳答案

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

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

output2 = tf.get_default_graph().get_tensor_by_name("output:0")

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

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

关于tensorflow - Tensorflow操作和张量之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51254771/

相关文章:

python - 如何检查NCCL的版本

TensorFlow:使用索引从张量中获取子张量

tensorflow 。 [batch_size, 1] 和 [batch_size] 之间的差异

python - 将特定的 TensorFlow 变量恢复到特定层(按名称恢复)

tensorflow - seq2seq模型的预处理

tensorflow - 构建 tf_estimator 时在tensorflow2.0中遇到错误

python - 如何在 TensorFlow 中获取张量中元素的计数?

c++ - 将预编译的tensorflow与cmake一起使用

tensorflow - 语义分割损失函数

python - 为什么使用 Tensorflow-Hub KerasLayer 会出现 'Connecting to invalid output of source node' 错误?