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