OutOfRangeError(参见上面的回溯):FIFOQueue' _1_batch / fifo_queue'关闭且元素不足(请求5,当前大小0)

时间:2017-06-26 14:53:44

标签: python csv tensorflow

我不知道如何解决这个问题,这个错误信息对我来说找不到问题是没用的。谢谢你的帮助!

  

这是e.csv,D.csv和F.csv

中的数据
e.csv: 1,2,3
       4,5,6
       7,8,9
D.csv: 11,12,13
       14,15,16
       17,18,19
F.csv: 21,22,23
       24,25,26
       27,28,29
  

这是我的代码

import tensorflow as tf
import os

file_dir = './KDD2'
fileNameQueue = []
for file in os.listdir(file_dir):
    fileNameQueue.append(file)

print fileNameQueue


filename_queue = tf.train.string_input_producer(fileNameQueue, shuffle=False)

reader = tf.TextLineReader()
key, value = reader.read(filename_queue)

col1,col2,label = tf.decode_csv(value, record_defaults=[[1],[1],[1]])

example = tf.pack([col1,col2])

example_batch, label_batch = tf.train.batch([example, label], batch_size=5)

with tf.Session() as sess:
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)
    for i in range(10):
        print example_batch.eval()
    coord.request_stop()
    coord.join(threads)
  

这是错误消息

root@ubuntumagiclab:/home/magiclab/SAE# python try.py 
['e.csv', 'D.csv', 'F.csv']
Traceback (most recent call last):
  File "try.py", line 30, in <module>
    print example_batch.eval()
  File "/usr/local/lib/python2.7/dist-
packages/tensorflow/python/framework/ops.py", line 575, in eval
    return _eval_using_default_session(self, feed_dict, self.graph, session)
  File "/usr/local/lib/python2.7/dist-
packages/tensorflow/python/framework/ops.py", line 3633, in _eval_using_default_session
    return session.run(tensors, feed_dict)
  File "/usr/local/lib/python2.7/dist-
packages/tensorflow/python/client/session.py", line 766, in run
run_metadata_ptr)
  File "/usr/local/lib/python2.7/dist-
packages/tensorflow/python/client/session.py", line 964, in _run
    feed_dict_string, options, run_metadata)
  File "/usr/local/lib/python2.7/dist-
packages/tensorflow/python/client/session.py", line 1014, in _do_run
target_list, options, run_metadata)
  File "/usr/local/lib/python2.7/dist-
packages/tensorflow/python/client/session.py", line 1034, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.OutOfRangeError: FIFOQueue '_0_batch/fifo_queue' is closed and has insufficient elements (requested 5, current size 0)
     [[Node: batch = QueueDequeueMany[_class=["loc:@batch/fifo_queue"], component_types=[DT_INT32, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/fifo_queue, batch/n)]]

Caused by op u'batch', defined at:
  File "try.py", line 24, in <module>
    example_batch, label_batch = tf.train.batch([example, label], batch_size=5)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/input.py", line 692, in batch
    dequeued = queue.dequeue_many(batch_size, name=name)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/data_flow_ops.py", line 458, in dequeue_many
self._queue_ref, n=n, component_types=self._dtypes, name=name)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_data_flow_ops.py", line 1099, in _queue_dequeue_many
timeout_ms=timeout_ms, name=name)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op
op_def=op_def)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2240, in create_op
original_op=self._default_original_op, op_def=op_def)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1128, in __init__
self._traceback = _extract_stack()

OutOfRangeError (see above for traceback): FIFOQueue '_0_batch/fifo_queue' is closed and has insufficient elements (requested 5, current size 0)
 [[Node: batch = QueueDequeueMany[_class=["loc:@batch/fifo_queue"], component_types=[DT_INT32, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/fifo_queue, batch/n)]]

1 个答案:

答案 0 :(得分:0)

问题在于文件路径。请提供如下所示的完整路径到fileName队列。

这对我有用:

fileNameQueue.append('/home/****/Desktop/stackoverflow/data/' +file)

希望这有帮助。