Tensorflow中的Tensor和Variable之间有什么区别

NoS*_*ult 23 tensorflow

Tensorflow Tensor和 之间的区别是什么Variable?我注意到在这个stackoverflow的答案中,我们可以Variable在任何Tensor可以使用的地方使用.但是,我没有尽到session.run()一个Variable:

A = tf.zeros([10])   # A is a Tensor
B = tf.Variable([111, 11, 11]) # B is a Variable
sess.run(A) # OK. Will return the values in A
sess.run(B) # Error.
Run Code Online (Sandbox Code Playgroud)

Eng*_*ero 26

Variable基本上是一个包装器,Tensor它在多个调用之间维护状态run,我认为通过保存和恢复图表可以使一些事情变得更容易.在运行变量之前,需要初始化变量.在定义变量时提供初始值,但必须调用其初始化函数才能在会话中实际分配此值,然后使用变量.一种常见的方法是使用tf.global_variables_initalizer().

例如:

import tensorflow as tf
test_var = tf.Variable([111, 11, 1])
sess = tf.Session()
sess.run(test_var)

# Error!

sess.run(tf.global_variables_initializer())  # initialize variables
sess.run(test_var)
# array([111, 11, 1], dtype=int32)
Run Code Online (Sandbox Code Playgroud)

至于为何使用Variables而不是Tensors,基本上变量是具有附加功能和实用程序的Tensor.您可以将Variable指定为trainable(默认值,实际值),这意味着您的优化器会调整它以尽量减少您的成本函数; 您可以指定变量驻留在分布式系统上的位置; 您可以轻松保存和恢复变量和图形.有关如何使用变量的更多信息,请参见此处.