随机洗牌的例子
要随机随机播放示例,可以使用 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_dequeue
和 capacity
元素之间读取,将它们存储在内存中并随机选择一批元素。之后,它将更多元素排列,以保持其数量在 min_after_dequeue
和 capacity
之间。因此,min_after_dequeue
的值越大,随机元素越多 - 保证从至少 16 个连续元素中选择 batch_size
元素,但是必须有更大的 capacity
,并且最初填充队列所需的时间越长。