def _shuffle_inputs(input_tensors, capacity, min_after_dequeue, num_threads):
    'Shuffles tensors in `input_tensors`, maintaining grouping.'
    shuffle_queue = tf.RandomShuffleQueue(capacity, min_after_dequeue, dtypes=[t.dtype for t in input_tensors])
    enqueue_op = shuffle_queue.enqueue(input_tensors)
    runner = tf.train.QueueRunner(shuffle_queue, ([enqueue_op] * num_threads))
    tf.train.add_queue_runner(runner)
    output_tensors = shuffle_queue.dequeue()
    for i in range(len(input_tensors)):
        output_tensors[i].set_shape(input_tensors[i].shape)
    return output_tensors
Shuffles tensors in `input_tensors`, maintaining grouping.
def _shuffle_inputs(input_tensors, capacity, min_after_dequeue, num_threads):
    
    shuffle_queue = tf.RandomShuffleQueue(capacity, min_after_dequeue, dtypes=[t.dtype for t in input_tensors])
    enqueue_op = shuffle_queue.enqueue(input_tensors)
    runner = tf.train.QueueRunner(shuffle_queue, ([enqueue_op] * num_threads))
    tf.train.add_queue_runner(runner)
    output_tensors = shuffle_queue.dequeue()
    for i in range(len(input_tensors)):
        output_tensors[i].set_shape(input_tensors[i].shape)
    return output_tensors