pytorch DataLoader 自定義資料集

2021-08-21 11:49:05 字數 2333 閱讀 7009

pytorch 提供了一種資料處理的方式,能夠生成mini-batch的資料,在訓練和測試的時候進行多執行緒處理,加快準備資料的速度。這個函式工具是

torch.utils.data import dataset, dataloader

其中dataset是我們定義自己的多執行緒資料處理框架的父類,我們定義的框架要繼承這個類

下面簡單定義資料準備的框架吧!!!

from torch.utils.data import dataset,dataloader

class

mydataset

(dataset):

def__init__

(self, filepath, transform=none,keys = none, target_transform=none):

pass

''' 首先說明一下以上的初始化引數,filepath是資料集的路徑,transform是對源資料(features)的一些變化,target_transform是對目標資料(labels)的一些變換,keys是鍵,因為我的資料是這樣的,整體是字典格式的,每個鍵對應的值又是ndarray資料,所以我通過鍵來索引對應的值

'''def__getitem__

(self,index):

pass

def__len__

(self):

pass

接下來結合資料來解釋以下**:

class

mydataset

(dataset):

def__init__

(self, filepath, transform=none,keys = none, target_transform=none):

with open(filepath,'rb') as f:

self.data = pickle.load(f)

self.keys = keys

self.input_seq = self.data[self.keys[0]] ### 輸入序列

self.output_seq = self.data[self.keys[1]] #### 輸出序列

self.transform = transform #### 對輸入序列進行變換

self.target_transform = target_transform ###### 對輸出序列進行變換

def__getitem__

(self, index):

input_seq,output_seq = self.input_seq[index],self.output_seq[index] ## 按照索引迭代讀取內容

if self.transform is

notnone:

input_seq = self.transform(input_seq)

output_seq = self.transform(output_seq)

return input_seq,output_seq ### 直接輸出輸入序列和輸出序列

def__len__

(self):

return self.data[self.keys[0]].shape[0] ### 返回的是樣本集的大小,樣本的個數

train_data = mydataset(filepath = 'train30.pickle',keys = ['aa','bb'])

test_data = mydataset(filepath = 'test30.pickle',keys = ['aa','bb'])

train_loader = dataloader(dataset = train_data,batch_size = 32,shuffle = false)

test_loader = dataloader(dataset = test_data,batch_size = 32,shuffle = false)

可以通過呼叫train_loader和 test_loader 來調取mini-batch的資料,batch_size在train_loader和test_loader中值都已經設好了,通過以下**批量調取:

from torch.autograd import variable

for i,(input_seq,out_seq) in enumerate(train_loader):

input_seq = variable(input_seq.cuda())

output_seq = variable(output_seq.cuda())

自定義資料屬性

設定自定義屬性 第一種方式 元素物件.屬性名 屬性值,原理 向物件對應的堆記憶體中新增了乙個屬性 var btnlist document.queryselectorall button for var i 0 i 第二種方式 基於h5的新語法,為元素新增屬性,以data 開,可以通過dataset...

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...