数据集shuffle方法中buffer_size的理解
生活随笔
收集整理的這篇文章主要介紹了
数据集shuffle方法中buffer_size的理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
tensorflow中的數據集類Dataset有一個shuffle方法,用來打亂數據集中數據順序,訓練時非常常用。其中shuffle方法有一個參數buffer_size,非常令人費解,文檔的解釋如下:
buffer_size: A tf.int64 scalar tf.Tensor, representing the number of elements from this dataset from which the new dataset will sample.你看懂了嗎?反正我反復看了這說明十幾次,仍然不知所指。
首先,Dataset會取所有數據的前buffer_size數據項,填充?buffer,如下圖
然后,從buffer中隨機選擇一條數據輸出,比如這里隨機選中了item 7,那么buffer中item 7對應的位置就空出來了
然后,從Dataset中順序選擇最新的一條數據填充到buffer中,這里是item 10
然后在從Buffer中隨機選擇下一條數據輸出。
需要說明的是,這里的數據項item,并不只是單單一條真實數據,如果有batch size,則一條數據項item包含了batch size條真實數據。
shuffle是防止數據過擬合的重要手段,然而不當的buffer size,會導致shuffle無意義,具體可以參考這篇Importance of buffer_size in shuffle()
轉載自:
https://zhuanlan.zhihu.com/p/42417456?
總結
以上是生活随笔為你收集整理的数据集shuffle方法中buffer_size的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow随机性设置
- 下一篇: tf.variable_scope与tf