Tensorflow FIFOQueue' _4_batch_join / fifo_queue'已关闭且元素不足

时间:2017-02-22 00:05:23

标签: tensorflow

tensorflow版本:1.0.0

    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)

1 个答案:

答案 0 :(得分:0)

准备最后一批时可能会发生这种情况。将allow_smaller_final_batch=True添加到您的train.batch_join调用中: 来自文档:

  

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