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

Tensorflow FIFOQUUE错误:FIFOQUUE已关闭且元素不足,tensorflow,Tensorflow,现在我正在使用tensorflow编写一个程序来验证模型。我使用FIFOQueue对输入数据进行排队。例如,我有50000张图像,一次排列100张图像。除了最后一次迭代之外,这个程序运行得很好。在最后的迭代中,它显示了错误 “E tensorflow/core/client/tensor_c_api.cc:485]FIFOQueue'\u 0\u path_queue'已关闭,元素不足(请求的1,当前大小为0) [[Node:path\u queue\u Dequeue=QueueDequeue

现在我正在使用tensorflow编写一个程序来验证模型。我使用FIFOQueue对输入数据进行排队。例如,我有50000张图像,一次排列100张图像。除了最后一次迭代之外,这个程序运行得很好。在最后的迭代中,它显示了错误 “E tensorflow/core/client/tensor_c_api.cc:485]FIFOQueue'\u 0\u path_queue'已关闭,元素不足(请求的1,当前大小为0) [[Node:path\u queue\u Dequeue=QueueDequeue\u class=[“loc:@path\u queue”],组件类型=[DT\u INT32,DT\u BOOL,DT\u STRING],timeout\u ms=-1,[u device=“/job:localhost/replica:0/task:0/cpu:0”]”

我认为这是因为它试图将50001~50100张图像排队,但无法实现这一点。但是,我不需要将这些图像排队,也不会使用它们。如何避免这个错误

另一个问题是,如果我想使用dequeue_many(100),那么图像的总数不能被100整除,比如说45678。在这种情况下,tensorflow将抛出一个错误。我怎样才能解决这个问题


谢谢。

请尝试
退出队列,而不是
退出队列


希望有帮助

您可以捕捉到特定错误,一旦所有示例都用尽,该错误将优雅地结束培训:

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

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

我相信这只是一个警告,说明队列是空的,但不会导致错误。我看到类似的警告,但我的程序没有中断。你的呢?请参阅。

我曾多次遇到此问题,根据我的经验,如果找不到输入文件,通常会导致此问题。我的输入是一个目录中的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'))
解决了这个问题