随机洗牌的例子

要随机随机播放示例,可以使用 tf.train.shuffle_batch 函数代替 tf.train.batch,如下所示:

parsed_batch = tf.train.shuffle_batch([serialized_example],
    batch_size=100, capacity=1000,
    min_after_dequeue=200)

tf.train.shuffle_batch(以及 tf.train.batch)创建了一个 tf.Queue 并不断添加 serialized_examples

capacity 测量一次可以在 Queue 中存储多少元素。更大的容量会导致更大的内存使用量,但线程等待填充它会导致更低的延迟。

min_after_dequeue 是从中获取元素后队列中存在的最小元素数。shuffle_batch 队列并没有完全统一地改变元素 - 它的设计考虑了巨大的数据,而不是适合记忆的数据。相反,它在 min_after_dequeuecapacity 元素之间读取,将它们存储在内存中并随机选择一批元素。之后,它将更多元素排列,以保持其数量在 min_after_dequeuecapacity 之间。因此,min_after_dequeue 的值越大,随机元素越多 - 保证从至少 16 个连续元素中选择 batch_size 元素,但是必须有更大的 capacity,并且最初填充队列所需的时间越长。