pytorch中如何使用DataLoader對(duì)數(shù)據(jù)集進(jìn)行批處理的方法
最近搞了搞minist手寫(xiě)數(shù)據(jù)集的神經(jīng)網(wǎng)絡(luò)搭建,一個(gè)數(shù)據(jù)集里面很多個(gè)數(shù)據(jù),不能一次喂入,所以需要分成一小塊一小塊喂入搭建好的網(wǎng)絡(luò)。
pytorch中有很方便的dataloader函數(shù)來(lái)方便我們進(jìn)行批處理,做了簡(jiǎn)單的例子,過(guò)程很簡(jiǎn)單,就像把大象裝進(jìn)冰箱里一共需要幾步?
第一步:打開(kāi)冰箱門(mén)。
我們要?jiǎng)?chuàng)建torch能夠識(shí)別的數(shù)據(jù)集類(lèi)型(pytorch中也有很多現(xiàn)成的數(shù)據(jù)集類(lèi)型,以后再說(shuō))。
首先我們建立兩個(gè)向量X和Y,一個(gè)作為輸入的數(shù)據(jù),一個(gè)作為正確的結(jié)果:

隨后我們需要把X和Y組成一個(gè)完整的數(shù)據(jù)集,并轉(zhuǎn)化為pytorch能識(shí)別的數(shù)據(jù)集類(lèi)型:

我們來(lái)看一下這些數(shù)據(jù)的數(shù)據(jù)類(lèi)型:

可以看出我們把X和Y通過(guò)Data.TensorDataset() 這個(gè)函數(shù)拼裝成了一個(gè)數(shù)據(jù)集,數(shù)據(jù)集的類(lèi)型是【TensorDataset】。
好了,第一步結(jié)束了,冰箱門(mén)打開(kāi)了。
第二步:把大象裝進(jìn)去。
就是把上一步做成的數(shù)據(jù)集放入Data.DataLoader中,可以生成一個(gè)迭代器,從而我們可以方便的進(jìn)行批處理。

DataLoader中也有很多其他參數(shù):
- dataset:Dataset類(lèi)型,從其中加載數(shù)據(jù)
- batch_size:int,可選。每個(gè)batch加載多少樣本
- shuffle:bool,可選。為T(mén)rue時(shí)表示每個(gè)epoch都對(duì)數(shù)據(jù)進(jìn)行洗牌
- sampler:Sampler,可選。從數(shù)據(jù)集中采樣樣本的方法。
- num_workers:int,可選。加載數(shù)據(jù)時(shí)使用多少子進(jìn)程。默認(rèn)值為0,表示在主進(jìn)程中加載數(shù)據(jù)。
- collate_fn:callable,可選。
- pin_memory:bool,可選
- drop_last:bool,可選。True表示如果最后剩下不完全的batch,丟棄。False表示不丟棄。
好了,第二步結(jié)束了,大象裝進(jìn)去了。
第三步:把冰箱門(mén)關(guān)上。
好啦,現(xiàn)在我們就可以愉快的用我們上面定義好的迭代器進(jìn)行訓(xùn)練啦。
在這里我們利用print來(lái)模擬我們的訓(xùn)練過(guò)程,即我們?cè)谶@里對(duì)搭建好的網(wǎng)絡(luò)進(jìn)行喂入。

輸出的結(jié)果是:

可以看到,我們一共訓(xùn)練了所有的數(shù)據(jù)訓(xùn)練了5次。數(shù)據(jù)中一共10組,我們?cè)O(shè)置的mini-batch是3,即每一次我們訓(xùn)練網(wǎng)絡(luò)的時(shí)候喂入3組數(shù)據(jù),到了最后一次我們只有1組數(shù)據(jù)了,比mini-batch小,我們就僅輸出這一個(gè)。
此外,還可以利用python中的enumerate(),是對(duì)所有可以迭代的數(shù)據(jù)類(lèi)型(含有很多東西的list等等)進(jìn)行取操作的函數(shù),用法如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中的錯(cuò)誤和異常處理簡(jiǎn)單操作示例【try-except用法】
這篇文章主要介紹了Python中的錯(cuò)誤和異常處理簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了Python中try except在錯(cuò)誤與異常處理中的用法,需要的朋友可以參考下2017-07-07
Python判斷對(duì)象是否為文件對(duì)象(file object)的三種方法示例
這篇文章主要介紹了Python判斷對(duì)象是否為文件對(duì)象(file object)的三種方法示例,https://www.pythontab.com/html/2018/pythonhexinbiancheng_1015/1362.html2019-04-04
數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號(hào)
我們?cè)谔幚砦谋镜臅r(shí)候往往需要對(duì)標(biāo)點(diǎn)符號(hào)進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號(hào)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
python返回多個(gè)值與賦值多個(gè)值的示例代碼
在Python中函數(shù)經(jīng)常會(huì)返回多個(gè)值,下面這篇文章主要給大家介紹了關(guān)于python返回多個(gè)值與賦值多個(gè)值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Python神奇的內(nèi)置函數(shù)locals的實(shí)例講解
今天小編就為大家分享一篇關(guān)于Python神奇的內(nèi)置函數(shù)locals的實(shí)例講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
Python使用scrapy采集數(shù)據(jù)時(shí)為每個(gè)請(qǐng)求隨機(jī)分配user-agent的方法
這篇文章主要介紹了Python使用scrapy采集數(shù)據(jù)時(shí)為每個(gè)請(qǐng)求隨機(jī)分配user-agent的方法,涉及Python使用scrapy采集數(shù)據(jù)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
pytorch 實(shí)現(xiàn)cross entropy損失函數(shù)計(jì)算方式
今天小編就為大家分享一篇pytorch 實(shí)現(xiàn)cross entropy損失函數(shù)計(jì)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
python實(shí)現(xiàn)連連看輔助(圖像識(shí)別)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)連連看輔助程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式
這篇文章主要介紹了Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

