隨機洗牌的例子

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