我是Tensorflow的新手。
tf.constant()
替换int32
,float32
或其他?tf.mul()
代替普通的Python乘法*
?tf.Print()
而不是print()
?答案 0 :(得分:1)
因为张量流是建立在计算图上的。当你在python中构造图形时,你只是构建一个计算的描述(实际上并没有进行计算)。要计算任何内容,必须在会话中启动图表。因此最好使用tensorflow操作进行计算。
https://www.tensorflow.org/versions/r0.11/get_started/basic_usage.html
答案 1 :(得分:1)
如上所述here,
Tensor是一个操作输出之一的符号句柄。它不保存该操作的输出值,而是提供在TensorFlow会话中计算这些值的方法
因此张量变量不像python变量。而是指定computational graph中的操作之间的关系。用于描述图形的python变量是为了程序员的方便,但可能更容易将python变量和张量变量视为并行命名空间。这个例子可能会有所帮助:
with tf.Session() as sess:
a = tf.constant([1, 2, 3])
b = tf.Variable([])
b = 2 * a
sess.run(tf.initialize_all_variables())
print(b) # Tensor("mul:0", shape=(3,), dtype=int32)
print(b.eval()) # [2, 4, 6]
b = tf.Print(b, [b]) # [2, 4, 6] (at the command line)
从中您可以看到:
print(b)
返回有关'b'引用的操作的信息,以及变量形状和数据类型,但不返回值。b.eval()
(或sess.run(b)
)返回b
的值作为numpy数组,可以通过python print()
打印tf.Print()
可让您在图表执行期间查看b
的值。 请注意tf.Print()
的语法对新手来说可能有点奇怪。如文档here中所述,tf.Print()
是一种身份操作,仅具有打印到命令行的副作用。第一个参数刚刚通过。第二个参数是打印的张量列表,可以与第一个参数不同。另请注意,为了使tf.Print()
能够执行某些操作,后续调用sess.run()
时使用的变量需要依赖tf.Print()
的张量输出,否则图的这一部分将不被执行。
最后关于数学操作,例如tf.mul()
vs *
许多普通的python操作都使用等效的tensorflow操作重载,如here所述。