pytorch自定義數(shù)據(jù)集加載方法-創(chuàng)新互聯(lián)

pytorch 官網(wǎng)給出的例子中都是使用了已經(jīng)定義好的特殊數(shù)據(jù)集接口來加載數(shù)據(jù),而且其使用的數(shù)據(jù)都是官方給出的數(shù)據(jù)。如果我們有自己收集的數(shù)據(jù)集,如何用來訓(xùn)練網(wǎng)絡(luò)呢?此時需要我們自己定義好數(shù)據(jù)處理接口。幸運(yùn)的是pytroch給出了一個數(shù)據(jù)集接口類(torch.utils.data.Dataset),可以方便我們繼承并實現(xiàn)自己的數(shù)據(jù)集接口。

創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運(yùn)營、App定制開發(fā)、手機(jī)網(wǎng)站制作設(shè)計、微信網(wǎng)站制作、軟件開發(fā)、資陽主機(jī)托管等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。

torch.utils.data

torch的這個文件包含了一些關(guān)于數(shù)據(jù)集處理的類。

class torch.utils.data.Dataset: 一個抽象類, 所有其他類的數(shù)據(jù)集類都應(yīng)該是它的子類。而且其子類必須重載兩個重要的函數(shù):len(提供數(shù)據(jù)集的大?。?、getitem(支持整數(shù)索引)。

class torch.utils.data.TensorDataset: 封裝成tensor的數(shù)據(jù)集,每一個樣本都通過索引張量來獲得。

class torch.utils.data.ConcatDataset: 連接不同的數(shù)據(jù)集以構(gòu)成更大的新數(shù)據(jù)集。

class torch.utils.data.Subset(dataset, indices): 獲取指定一個索引序列對應(yīng)的子數(shù)據(jù)集。

class torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=<function default_collate>, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None): 數(shù)據(jù)加載器。組合了一個數(shù)據(jù)集和采樣器,并提供關(guān)于數(shù)據(jù)的迭代器。

torch.utils.data.random_split(dataset, lengths): 按照給定的長度將數(shù)據(jù)集劃分成沒有重疊的新數(shù)據(jù)集組合。

class torch.utils.data.Sampler(data_source):所有采樣的器的基類。每個采樣器子類都需要提供 __iter__ 方法以方便迭代器進(jìn)行索引 和一個 len方法 以方便返回迭代器的長度。

class torch.utils.data.SequentialSampler(data_source):順序采樣樣本,始終按照同一個順序。

class torch.utils.data.RandomSampler(data_source):無放回地隨機(jī)采樣樣本元素。

class torch.utils.data.SubsetRandomSampler(indices):無放回地按照給定的索引列表采樣樣本元素。

class torch.utils.data.WeightedRandomSampler(weights, num_samples, replacement=True): 按照給定的概率來采樣樣本。

class torch.utils.data.BatchSampler(sampler, batch_size, drop_last): 在一個batch中封裝一個其他的采樣器。

class torch.utils.data.distributed.DistributedSampler(dataset, num_replicas=None, rank=None):采樣器可以約束數(shù)據(jù)加載進(jìn)數(shù)據(jù)集的子集。

自定義數(shù)據(jù)集

自己定義的數(shù)據(jù)集需要繼承抽象類class torch.utils.data.Dataset,并且需要重載兩個重要的函數(shù):__len__ 和__getitem__。

整個代碼僅供參考。在__init__中是初始化了該類的一些基本參數(shù);__getitem__中是真正讀取數(shù)據(jù)的地方,迭代器通過索引來讀取數(shù)據(jù)集中數(shù)據(jù),因此只需要這一個方法中加入讀取數(shù)據(jù)的相關(guān)功能即可;__len__給出了整個數(shù)據(jù)集的尺寸大小,迭代器的索引范圍是根據(jù)這個函數(shù)得來的。

import torch

class myDataset(torch.nn.data.Dataset):
 def __init__(self, dataSource)
  self.dataSource = dataSource

 def __getitem__(self, index):
  element = self.dataSource[index]
  return element
 def __len__(self):
  return len(self.dataSource)

train_data = myDataset(dataSource)

本文名稱:pytorch自定義數(shù)據(jù)集加載方法-創(chuàng)新互聯(lián)
本文來源:http://www.muchs.cn/article18/dpgsdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站排名、網(wǎng)站制作動態(tài)網(wǎng)站、虛擬主機(jī)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營