TensorFlow - 如何使用每个示例一次且仅一次评估所有测试集

时间:2016-06-30 14:01:12

标签: python machine-learning tensorflow

我正在从TensorFlow运行cifar10示例。但是评估存在问题。

我有一个测试集,我想从它一次只评估一次的每个例子。但是代码(line 121)现在只从队列(line 126)中获取,这不能保证。我还做了一个修改,输入是一个' .tfrecords'文件。有什么建议吗?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

创建文件名tf.train.string_input_producer队列的函数here可以接受参数num_epochs。您可以指定您希望它仅运行1个纪元。

# Create a queue that produces the filenames to read.
filename_queue = tf.train.string_input_producer(filenames, num_epochs=1)

答案 1 :(得分:0)

我已经找到了解决方案,但相当不完美。线索是从变量中排除它以加载,然后由自己初始化limit_epochs。以下是详细步骤:

添加代码 del variables_to_restore['input_producer/limit_epochs/epochs']之后的variables_to_restore = variable_averages.variables_to_restore()。它将停止将input_producer/limit_epochs加载到模型中。

接下来,在会话中添加代码sess.run(tf.initialize_variables([v for v in tf.all_variables() if v.name.startswith("input_producer")]))以激活变量。

最后,执行操作filename_queue = tf.train.string_input_producer(filenames, num_epochs=1)

在关闭线程之前尝试保存文件。

如果您希望它适合任意测试示例,您必须使每个线程只读一个示例。