Tensorflow FIFOQueue错误:FIFOQueue已关闭且元素不足

时间:2016-08-17 17:55:27

标签: tensorflow

现在我使用tensorflow编写程序来验证模型。我使用FIFOQueue对输入数据进行排队。例如,我有50,000张图像,一次排列100张图像。除最后一次迭代外,该程序运行良好。在最后一次迭代中,它显示错误 “E tensorflow / core / client / tensor_c_api.cc:485] FIFOQueue'_0_path_queue'已关闭且元素不足(请求1,当前大小为0)      [[Node:path_queue_Dequeue = QueueDequeue_class = [“loc:@path_queue”],component_types = [DT_INT32,DT_BOOL,DT_STRING],timeout_ms = -1,_device =“/ job:localhost / replica:0 / task:0 / cpu: 0 “]]”

我认为这是因为它试图将50,001~50,100图像排入队列但却无法实现。但是,我不需要将这些图像排入队列,也不会使用它们。如何避免此错误?

另一个问题是,如果我想使用dequeue_many(100),则图像总数不能被100整除,比如说45678.在这种情况下,tensorflow会抛出错误。我该如何解决这个问题?

感谢。

4 个答案:

答案 0 :(得分:2)

尝试使用dequeue_up_to代替dequeue_manyhttps://www.tensorflow.org/versions/r0.10/api_docs/python/io_ops.html

希望有所帮助!

答案 1 :(得分:1)

你可以捕捉到特定的错误,一旦所有的例子都用完了就会优雅地结束训练:

try:
    while True:
        # Run training Ops here...

except tf.errors.OutOfRangeError:
    print('Done training -- epoch limit reached')

答案 2 :(得分:1)

我已经多次遇到此问题,根据我的经验,这通常是由于找不到输入文件而引起的。我的输入是一个目录中的png列表,我正在使用它来获取输入图像。

input = tensorflow.train.string_input_producer(tensorflow.train.match_filenames_once("/input/*.png"))

以某种方式无法正确获取文件。将其更改为

filename_im = tensorflow.train.string_input_producer(glob.glob('/input/*.png'))

解决了问题

答案 3 :(得分:0)

我认为这只是队列为空的警告,但不会导致错误。我看到类似的警告但我的程序没有破坏。你的吗?请参阅this thread