TensorFlow:在变量初始化中"尝试使用未初始化的值"

Bao*_*eng 19 tensorflow

这是我的代码.

import tensorflow as tf

a=tf.Variable(tf.constant([0,1,2],dtype=tf.int32))
b=tf.Variable(tf.constant([1,1,1],dtype=tf.int32))
recall=tf.metrics.recall(b,a)

init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    rec=sess.run(recall)
    print(rec)
Run Code Online (Sandbox Code Playgroud)

我试图测试tf.metrics.precision并得到以下错误消息.

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value recall/true_positives/count
     [[Node: recall/true_positives/count/read = Identity[T=DT_FLOAT, _class=["loc:@recall/true_positives/count"], _device="/job:localhost/replica:0/task:0/gpu:0"](recall/true_positives/count)]]
     [[Node: recall/value/_15 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_73_recall/value", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
Run Code Online (Sandbox Code Playgroud)

pfm*_*pfm 44

您还需要初始化tf.metrics.recall方法中隐藏的局部变量.

例如,这段代码可以工作:

init_g = tf.global_variables_initializer()
init_l = tf.local_variables_initializer()
with tf.Session() as sess:
    sess.run(init_g)
    sess.run(init_l)
Run Code Online (Sandbox Code Playgroud)

  • @npf感谢您的回答,但请您解释一下local_variables_initializer()的作用?这对我来说似乎违反直觉,因为计算召回所需的所有值都是通过图表计算出来的.local_variables_initializer()有什么作用? (3认同)