2017-02-22 14 views
1

tensorflow版本:1.0.0Tensorflow FIFOQueue '_4_batch_join/fifo_queue' 被关闭,没有足够的元件

NUM_THREADS = 4 
    BATCH_SIZE = 32 
    csv_file_queue = tf.train.string_input_producer(csv_files, shuffle=False) 
    jpg_file_queue = tf.train.string_input_producer(jpg_files, shuffle=False) 
    data_batch_list = [read_data(csv_file_queue, jpg_file_queue) for _ in range(NUM_THREADS)] 
    csv_data_batch, jpg_data_batch = tf.train.batch_join(data_batch_list, batch_size=BATCH_SIZE) 

    sess.run(tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())) 

    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(sess=sess, coord=coord) 
      ... 
    coord.request_stop() 
    coord.join(threads) 

OutOfRangeError异常(参见上述用于回溯):FIFOQueue '_4_batch_join/fifo_queue' 被关闭,没有足够的元件(请求32,当前大小为17)

回答

0

这可能发生在准备最后一批时。从文档 :添加allow_smaller_final_batch=Truetrain.batch_join调用

如果allow_smaller_final_batch是真,当队列被关闭返回比 的batch_size小批量价值,有没有 足够的元素来填充料,否则待处理元素丢弃 。另外,通过get_shape方法访问 的所有输出张量的静态形状将具有第一个维值None, ,并且依赖于固定batch_size的操作将失败。

相关问题