pytorch之DataLoader()函數


在訓練神經網絡時,最好是對一個batch的數據進行操作,同時還需要對數據進行shuffle和並行加速等。對此,PyTorch提供了DataLoader幫助我們實現這些功能。

DataLoader的函數定義如下:

DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, num_workers=0, collate_fn=default_collate, pin_memory=False, drop_last=False)

dataset:加載的數據集(Dataset對象)
batch_size:batch size
shuffle::是否將數據打亂
sampler: 樣本抽樣,后續會詳細介紹
num_workers:使用多進程加載的進程數,0代表不使用多進程
collate_fn: 如何將多個樣本數據拼接成一個batch,一般使用默認的拼接方式即可
pin_memory:是否將數據保存在pin memory區,pin memory中的數據轉到GPU會快一些
drop_last:dataset中的數據個數可能不是batch_size的整數倍,drop_last為True會將多出來不足一個batch的數據丟棄

 

def main():
    import visdom
    import time

    viz = visdom.Visdom()

    db = Pokemon('pokeman', 224, 'train')

    x,y = next(iter(db))   ##
    print('sample:',x.shape,y.shape,y)

    viz.image(db.denormalize(x),win='sample_x',opts=dict(title='sample_x'))

    loader = DataLoader(db,batch_size=32,shuffle=True)

    for x,y in loader:  #為了得一個一個的數據集形式的數據每一組32張
        viz.images(db.denormalize(x),nrow=8,win='batch',opts = dict(title = 'batch'))
        viz.text(str(y.numpy()),win = 'label',opts=dict(title='batch-y'))

        time.sleep(10)

 

 

 

在數據處理中,有時會出現某個樣本無法讀取等問題,比如某張圖片損壞。這時在_ getitem _函數中將出現異常,此時最好的解決方案即是將出錯的樣本剔除

 

pytorch 數據處理:定義自己的數據集合

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM