圖像識別實戰(二)----讀取數據reader
從本地、網絡、分佈式文件系統HDFS等讀取文件,同時也可隨機生成數據,並返回一個或多個數據項。
reader的實質是一個迭代器(yield),每次返回一個數據
創建reader
reader = paddle.dataset.uci_housing.train()
但是很多數據集非常規範,即所有相同的標籤存在聚集效應,這就造成了,模型訓練某一個標籤的時候要不就全部訓練,要不就一點也訓練不了,
爲了解決這一問題就有了shuffle_reader()&batch_reader()
shuffle_reader
shuffle就是一個裝滿了reader的容器,裝了很多很多reader(buf_reader)個,shuffle的功能就是把他們的順序打亂
shuffle_reader,可以將reader中的數據放進去,同時返回reader,
shuffle_reader存在一個buf_size參數,int類型,配置buf_reader之後就可以每次讀取buf_reader個數據,之後將這buf_reader個數據打亂,隨機化。
每次讀取buf_size個數據,就完美的契合機器學習,每次選擇一定數量的訓練數據進行訓練。
shuffle_reader = paddle.reader.shuffle(reader ,buf_size = 100)
batch_size
每次讀取打亂過後的batch_size個數據進行訓練
batch_reader = paddle.batch(shuffle_reader,batch_size = 2)
高級用法:
三個函數組合起來
reader = paddle.batch(
paddle.reader.shuffle(
uci_housing.train(),
buf_size = 100),
batch_size=2)