Variable
is basically a wrapper on Tensor
that maintains state across multiple calls to run
, and I think makes some things easier with saving and restoring graphs. A Variable
needs to be initialized before you can run it. You provide an initial value when you define the Variable
, but you have to call its initializer function in order to actually assign this value in your session and then use the Variable
. A common way to do this is with tf.global_variables_initalizer()
.
For example:
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)
As for why you use Variable
s instead of Tensor
s, basically a Variable
is a Tensor
with additional capability and utility. You can specify a Variable
as trainable (the default, actually), meaning that your optimizer will adjust it in an effort to minimize your cost function; you can specify where the Variable
resides on a distributed system; you can easily save and restore Variable
s and graphs. Some more information on how to use Variable
s can be found here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…