我是Tensorflow的新人。我在理解它的常数时遇到了麻烦。我有下面提到的这个简单代码:
import tensorflow as tf
vector = tf.constant([[1,2,3,4],[4,5,6,7],[8,9,1,2]],tf.int32,name="vector")
with tf.Session() as sess:
v = sess.run(vector)
argm = tf.argmax(v,1)
print(argm)
我希望这会返回类似[4,7,8]
的内容,正如我从文档中所理解的那样。相反,我得到了这个:
Tensor("ArgMax:0", shape=(3,), dtype=int64).
所以,我不知道自己做错了什么。
答案 0 :(得分:1)
除了@James的答案之外,您可能想要使用tensorflow的eager execution,其行为更像“标准”python:操作在您键入时执行,不再有图形和Session
。
import tensorflow as tf
tf.enable_eager_execution()
vector = tf.constant([[1,2,3,4],[4,5,6,7],[8,9,1,2]],tf.int32,name="vector")
argm = tf.argmax(vector,1)
print(argm)
答案 1 :(得分:0)
像tf.argmax
这样的Tensorflow操作有点不直观地执行他们所说的操作,但是将操作添加到将要执行的图形中。当您运行argm = tf.argmax(v,1)
时,返回值是尚未评估的张量。
如果你想要argmax操作的结果,你可以运行这样的东西:
import tensorflow as tf
vector = tf.constant([[1,2,3,4],[4,5,6,7],[8,9,1,2]],tf.int32,name="vector")
argm = tf.argmax(vector,1)
with tf.Session() as sess:
a = sess.run(argm)
print(a)
使用此代码,我们明确要求Tensorflow运行计算以计算tf.argmax操作的结果。使用之前的代码,我们运行计算来计算v(这是一个常量,因此非常快),然后定义一个新的图形操作来计算argmax - 但实际上从未进行过计算。