隨機洗牌的例子
要隨機隨機播放示例,可以使用 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
,並且最初填充佇列所需的時間越長。