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)
至于为什么使用变量而不是张量,基本上变量就是具有附加功能和实用程序的张量。您可以将变量指定为可训练的(实际上是默认值),这意味着优化器将对其进行调整,以最大程度地降低成本函数。您可以指定变量在分布式系统上的位置;您可以轻松地保存和恢复变量和图形。有关如何使用变量的更多信息,请参见此处 。
0
什么之间的区别
Tensor
和Variable
在Tensorflow?我在这个stackoverflow答案中注意到,只要可以使用Tensor
,就可以使用Variable
。但是,我无法在Variable
上执行session.run()
: