pytorch中如何使用DataLoader對數(shù)據(jù)集進行批處理的方法
最近搞了搞minist手寫數(shù)據(jù)集的神經(jīng)網(wǎng)絡搭建,一個數(shù)據(jù)集里面很多個數(shù)據(jù),不能一次喂入,所以需要分成一小塊一小塊喂入搭建好的網(wǎng)絡。
pytorch中有很方便的dataloader函數(shù)來方便我們進行批處理,做了簡單的例子,過程很簡單,就像把大象裝進冰箱里一共需要幾步?
第一步:打開冰箱門。
我們要創(chuàng)建torch能夠識別的數(shù)據(jù)集類型(pytorch中也有很多現(xiàn)成的數(shù)據(jù)集類型,以后再說)。
首先我們建立兩個向量X和Y,一個作為輸入的數(shù)據(jù),一個作為正確的結果:
隨后我們需要把X和Y組成一個完整的數(shù)據(jù)集,并轉化為pytorch能識別的數(shù)據(jù)集類型:
我們來看一下這些數(shù)據(jù)的數(shù)據(jù)類型:
可以看出我們把X和Y通過Data.TensorDataset() 這個函數(shù)拼裝成了一個數(shù)據(jù)集,數(shù)據(jù)集的類型是【TensorDataset】。
好了,第一步結束了,冰箱門打開了。
第二步:把大象裝進去。
就是把上一步做成的數(shù)據(jù)集放入Data.DataLoader中,可以生成一個迭代器,從而我們可以方便的進行批處理。
DataLoader中也有很多其他參數(shù):
- dataset:Dataset類型,從其中加載數(shù)據(jù)
- batch_size:int,可選。每個batch加載多少樣本
- shuffle:bool,可選。為True時表示每個epoch都對數(shù)據(jù)進行洗牌
- sampler:Sampler,可選。從數(shù)據(jù)集中采樣樣本的方法。
- num_workers:int,可選。加載數(shù)據(jù)時使用多少子進程。默認值為0,表示在主進程中加載數(shù)據(jù)。
- collate_fn:callable,可選。
- pin_memory:bool,可選
- drop_last:bool,可選。True表示如果最后剩下不完全的batch,丟棄。False表示不丟棄。
好了,第二步結束了,大象裝進去了。
第三步:把冰箱門關上。
好啦,現(xiàn)在我們就可以愉快的用我們上面定義好的迭代器進行訓練啦。
在這里我們利用print來模擬我們的訓練過程,即我們在這里對搭建好的網(wǎng)絡進行喂入。
輸出的結果是:
可以看到,我們一共訓練了所有的數(shù)據(jù)訓練了5次。數(shù)據(jù)中一共10組,我們設置的mini-batch是3,即每一次我們訓練網(wǎng)絡的時候喂入3組數(shù)據(jù),到了最后一次我們只有1組數(shù)據(jù)了,比mini-batch小,我們就僅輸出這一個。
此外,還可以利用python中的enumerate(),是對所有可以迭代的數(shù)據(jù)類型(含有很多東西的list等等)進行取操作的函數(shù),用法如下:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python中的錯誤和異常處理簡單操作示例【try-except用法】
這篇文章主要介紹了Python中的錯誤和異常處理簡單操作,結合實例形式分析了Python中try except在錯誤與異常處理中的用法,需要的朋友可以參考下2017-07-07Python判斷對象是否為文件對象(file object)的三種方法示例
這篇文章主要介紹了Python判斷對象是否為文件對象(file object)的三種方法示例,https://www.pythontab.com/html/2018/pythonhexinbiancheng_1015/1362.html2019-04-04數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號
我們在處理文本的時候往往需要對標點符號進行處理,下面這篇文章主要給大家介紹了關于數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-11-11Python神奇的內(nèi)置函數(shù)locals的實例講解
今天小編就為大家分享一篇關于Python神奇的內(nèi)置函數(shù)locals的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Python使用scrapy采集數(shù)據(jù)時為每個請求隨機分配user-agent的方法
這篇文章主要介紹了Python使用scrapy采集數(shù)據(jù)時為每個請求隨機分配user-agent的方法,涉及Python使用scrapy采集數(shù)據(jù)的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04pytorch 實現(xiàn)cross entropy損失函數(shù)計算方式
今天小編就為大家分享一篇pytorch 實現(xiàn)cross entropy損失函數(shù)計算方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python中字節(jié)數(shù)組和16進制字符串轉換方式
這篇文章主要介紹了Python中字節(jié)數(shù)組和16進制字符串轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06