TensorFlow:无法调用 streaming_sparse_precision_at_k
TensorFlow: Can't invoke streaming_sparse_precision_at_k
在尝试计算 precision@k 时,出现异常。以下是重现问题的简单代码。
首先代码定义变量作用域:
initializer = tf.random_uniform_initializer(-0.1, 0.1, seed=1234)
with tf.variable_scope("model", reuse=None, initializer=initializer)
然后调用这些行:
predictions = tf.Variable(tf.ones([2, 10], tf.int64))
labels = tf.Variable(tf.ones([2, 1], tf.int64))
precision = tf.contrib.metrics.streaming_sparse_precision_at_k(predictions, labels, 5)
tf.initialize_all_variables().run()
(我知道这段代码没有意义,尝试计算给定2个固定矩阵的精度...)
然后我得到以下异常:
W tensorflow/core/framework/op_kernel.cc:936] Failed precondition:
Attempting to use uninitialized value
model/precision_at_5/false_positive_at_5 [[Node:
model/precision_at_5/false_positive_at_5/read = IdentityT=DT_DOUBLE,
_class=["loc:@model/precision_at_5/false_positive_at_5"], _device="/job:localhost/replica:0/task:0/gpu:0"]]
当我尝试调用 streaming_sparse_recall_at_k
而不是 streaming_sparse_precision_at_k
时也是如此。
安装的版本是 linux 上的 r0.10 和 python 2.7.
请帮忙...提前致谢:)
不幸的是,tf.initialize_all_variables()
doesn't initialize "local" variables (which tend to be internal implementation details for ops like tf.contrib.metrics.streaming_sparse_precision_at_k()
and tf.train.string_input_producer()
,而不是用作模型权重的变量)。
您需要在 运行 评估操作之前向运行 tf.initialize_local_variables()
的程序添加一行:
sess.run(tf.initialize_local_variables()) # or `tf.initialize_local_variables().run()`
在尝试计算 precision@k 时,出现异常。以下是重现问题的简单代码。
首先代码定义变量作用域:
initializer = tf.random_uniform_initializer(-0.1, 0.1, seed=1234)
with tf.variable_scope("model", reuse=None, initializer=initializer)
然后调用这些行:
predictions = tf.Variable(tf.ones([2, 10], tf.int64))
labels = tf.Variable(tf.ones([2, 1], tf.int64))
precision = tf.contrib.metrics.streaming_sparse_precision_at_k(predictions, labels, 5)
tf.initialize_all_variables().run()
(我知道这段代码没有意义,尝试计算给定2个固定矩阵的精度...)
然后我得到以下异常:
W tensorflow/core/framework/op_kernel.cc:936] Failed precondition: Attempting to use uninitialized value model/precision_at_5/false_positive_at_5 [[Node: model/precision_at_5/false_positive_at_5/read = IdentityT=DT_DOUBLE, _class=["loc:@model/precision_at_5/false_positive_at_5"], _device="/job:localhost/replica:0/task:0/gpu:0"]]
当我尝试调用 streaming_sparse_recall_at_k
而不是 streaming_sparse_precision_at_k
时也是如此。
安装的版本是 linux 上的 r0.10 和 python 2.7.
请帮忙...提前致谢:)
不幸的是,tf.initialize_all_variables()
doesn't initialize "local" variables (which tend to be internal implementation details for ops like tf.contrib.metrics.streaming_sparse_precision_at_k()
and tf.train.string_input_producer()
,而不是用作模型权重的变量)。
您需要在 运行 评估操作之前向运行 tf.initialize_local_variables()
的程序添加一行:
sess.run(tf.initialize_local_variables()) # or `tf.initialize_local_variables().run()`