pytorch sampler對數(shù)據(jù)進行采樣的實現(xiàn)
PyTorch中還單獨提供了一個sampler模塊,用來對數(shù)據(jù)進行采樣。常用的有隨機采樣器:RandomSampler,當(dāng)dataloader的shuffle參數(shù)為True時,系統(tǒng)會自動調(diào)用這個采樣器,實現(xiàn)打亂數(shù)據(jù)。默認(rèn)的是采用SequentialSampler,它會按順序一個一個進行采樣。這里介紹另外一個很有用的采樣方法: WeightedRandomSampler,它會根據(jù)每個樣本的權(quán)重選取數(shù)據(jù),在樣本比例不均衡的問題中,可用它來進行重采樣。
構(gòu)建WeightedRandomSampler時需提供兩個參數(shù):每個樣本的權(quán)重weights、共選取的樣本總數(shù)num_samples,以及一個可選參數(shù)replacement。權(quán)重越大的樣本被選中的概率越大,待選取的樣本數(shù)目一般小于全部的樣本數(shù)目。replacement用于指定是否可以重復(fù)選取某一個樣本,默認(rèn)為True,即允許在一個epoch中重復(fù)采樣某一個數(shù)據(jù)。如果設(shè)為False,則當(dāng)某一類的樣本被全部選取完,但其樣本數(shù)目仍未達(dá)到num_samples時,sampler將不會再從該類中選擇數(shù)據(jù),此時可能導(dǎo)致weights參數(shù)失效。
下面舉例說明。
from dataSet import * dataset = DogCat('data/dogcat/', transform=transform) from torch.utils.data import DataLoader # 狗的圖片被取出的概率是貓的概率的兩倍 # 兩類圖片被取出的概率與weights的絕對大小無關(guān),只和比值有關(guān) weights = [2 if label == 1 else 1 for data, label in dataset] print(weights) from torch.utils.data.sampler import WeightedRandomSampler sampler = WeightedRandomSampler(weights,\ num_samples=9,\ replacement=True) dataloader = DataLoader(dataset, batch_size=3, sampler=sampler) for datas, labels in dataloader: print(labels.tolist())
輸出:
[2, 2, 1, 1, 2, 1, 1, 2] [1, 1, 0] [1, 0, 0] [0, 0, 1]
github 地址:
https://github.com/WebLearning17/CommonTool
以上這篇pytorch sampler對數(shù)據(jù)進行采樣的實現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于python中range()的參數(shù)問題
這篇文章主要介紹了關(guān)于python中range()的參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05Python3中_(下劃線)和__(雙下劃線)的用途和區(qū)別
經(jīng)常會看到以下劃線或者雙下劃線開頭的方法或者屬性,到底它們有什么作用,又有什么樣的區(qū)別呢?今天我們來總結(jié)一下,感興趣的小伙伴們可以參考一下2019-04-04python腳本實現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實例代碼
這篇文章主要介紹了python腳本實現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10Python 調(diào)用有道翻譯接口實現(xiàn)翻譯
這篇文章主要介紹了Python 調(diào)用有道翻譯接口實現(xiàn)翻譯,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03python 安裝virtualenv和virtualenvwrapper的方法
下面小編就為大家?guī)硪黄猵ython 安裝virtualenv和virtualenvwrapper的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01基于Python socket實現(xiàn)簡易網(wǎng)絡(luò)聊天室
本文主要介紹了基于Python socket實現(xiàn)簡易網(wǎng)絡(luò)聊天室,本文將通過pyqt5作為桌面應(yīng)用框架,socket作為網(wǎng)絡(luò)編程的框架,從而實現(xiàn)包括客戶端和服務(wù)端的網(wǎng)絡(luò)聊天室的GUI應(yīng)用,需要的可以參考一下2022-07-07