2016-07-15 88 views
0

我正在试验tensorflow,我试图从csv文件读取并通过shuffle_batch打印出一批数据。我扔了decode_csv docsshuffle_batch docs,但我仍然无法得到它的工作。使用tensorflow的shuffle_batch方法

这是我有: 进口tensorflow为TF

sess = tf.InteractiveSession() 

filename_queue = tf.train.string_input_producer(
    ["./data/train.csv"], num_epochs=1, shuffle=True) # total record count in csv is 30K 
reader = tf.TextLineReader() 
key, value = reader.read(filename_queue) 

record_defaults = [["1"], ["2"]] # irrelevant for this discussion 
input, outcome = tf.decode_csv(value, record_defaults=record_defaults) 

min_after_dequeue = 1000 
batch_size = 10 
capacity = min_after_dequeue + 3 * batch_size 

example_batch = tf.train.shuffle_batch([outcome], batch_size, capacity, min_after_dequeue) 
coord = tf.train.Coordinator() 
tf.train.start_queue_runners(sess, coord=coord) 
example_batch.eval(session = sess) 

运行,这将产生此异常:

OutOfRangeError: RandomShuffleQueue 
    '_3_shuffle_batch_1/random_shuffle_queue' is closed 
    and has insufficient elements (requested 10, current size 0) 

我不知道是什么问题。我有一种感觉,这是由于会议和我处理它的方式;我可能做得不好。

回答

0

尝试从string_input_producer初始值设定项中删除num_epochs=1。 “

+0

是的,那工作。非常感谢! ......你能告诉我背后的原因吗? – rtorres

+0

该参数限制队列仅通过一次数据,所以我认为它正在耗尽示例来填满队列。也许数据没有你想象的那么多(关闭某个或某些东西?) –