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)
答案 0 :(得分:0)
准备最后一批时可能会发生这种情况。将allow_smaller_final_batch=True
添加到您的train.batch_join
调用中:
来自文档:
如果allow_smaller_final_batch为True,则批量值小于 当队列关闭但没有时,将返回batch_size 足够的元素来填充批处理,否则待处理的元素是 丢弃。此外,所有输出张量'静态形状,如访问 通过get_shape方法将第一个Dimension值设为None, 并且依赖于固定batch_size的操作将失败。