我对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),我将不会得到任何结果。有没有一种方法可以把output2转换成输出?
我是一个PyTorch用户,PyTorch中的运算和张量有什么相似之处?
发布于 2018-07-10 06:36:48
我没有使用过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 Dictionary将值提供给图形。
https://stackoverflow.com/questions/51254771
复制相似问题