TensorFlow
API的一节非常短
tf.global_variables_initializer。它只是提到:
这只是的快捷方式
variable_initializer(global_variables())。
将其跟踪到
tf.variables_initializer,我们可以看到此函数的用法如下:
tf.variables_initializer(var_list, name='init')
这意味着我们正在implitcitly传递
tf.global_variables作为
var_list成
tf.variables_initializer。如果在调用之前没有定义任何变量
tf.global_variables_initializer,
var_list则本质上为空。下面的代码说明了这一点:
import tensorflow as tfwith tf.Graph().as_default(): # Nothing is printed for v in tf.global_variables(): print v init_op = tf.global_variables_initializer() a = tf.Variable(0) b = tf.Variable(0) c = tf.Variable(0) # 3 Variables are printed here for v in tf.global_variables(): print v with tf.Session() as sess: sess.run(init_op) print sess.run(a)
输出的3个变量是这样的:
<tf.Variable 'Variable:0' shape=() dtype=int32_ref><tf.Variable 'Variable_1:0' shape=() dtype=int32_ref><tf.Variable 'Variable_2:0' shape=() dtype=int32_ref>
像上面那样运行上面的代码会导致错误:
Attempting to use uninitialized value
交换位置
init_op后
a b c:
a = tf.Variable(0) b = tf.Variable(0) c = tf.Variable(0) init_op = tf.global_variables_initializer()
将使其工作。



