我正在运行TensorFlow中的cifar10示例。但是在评估时遇到了问题。
我有一个测试集,我想评估其中的每个示例一次且仅一次。但代码(第121行)现在只是从一个队列中取数据(第126行),这无法保证每个示例仅被评估一次。我还做了修改,使输入是一个’.tfrecords’文件。有什么建议吗?
提前感谢您。
回答:
我找到了一种解决方案,但并不完美。关键是要将其从要加载的变量中排除,然后自己初始化limit_epochs
。以下是详细步骤:
在variables_to_restore = variable_averages.variables_to_restore()
之后添加代码del variables_to_restore['input_producer/limit_epochs/epochs']
。这样将停止加载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)
。
并且在关闭线程之前尝试保存文件。
不完美之处在于,如果您希望它适用于任意测试示例,您必须让每个线程仅读取一个示例。