pytorch資料讀取

2022-02-07 23:23:09 字數 4528 閱讀 6248

pytorch資料讀取機制:

sampler生成索引index,根據索引從dataset中獲取和標籤

1.torch.utils.data.dataloader

功能:構建可迭代的資料裝在器

dataset:dataset類,決定資料從哪讀取及如何讀取

batchsize:批大小

num_works:是否多程序讀取資料,當條件允許時,多程序讀取資料會加快資料讀取速度。

shuffle:每個epoch是否亂序

drop_last:當樣本數不能被batchsize整除時,是否捨棄最後一批資料

dataloader(dataset, batchsize=1, shuffle=false, batch_sampler=none, num_workers=0, collate_fn=none, pin_memeory=false, drop_last=false, timeout=0, worker_init_fn=none, multiprocessing_context=none)

epoch:所有訓練樣本都已輸入到模型中,稱為乙個epoch

iteration:一批樣本輸入到模型中,稱為乙個iteration

batchsize:批大小,決定乙個epoch有多少個iteration

例如:樣本總數:80, batchsize:8

1epoch = 10 iteraion

樣本總數:87, batchsize:8

1 epoch = 10 iteration drop_last=true

1 epoch = 11 iteration drop_last=false

2.torch.utils.data.dataset

功能:dataset抽象類,所有自定義的dataset需要繼承它,並且複寫

__getitem__()

getitem:接收乙個索引,返回乙個樣本

class

dataset(object):

def__getitem__

(self, index):

raise

notimplementederror

def__add__

(self, other):

return concatdataset([self, other])

人命幣分類例項:

資料分割:

建立dataset

import

osimport

random

from pil import

image

from torch.utils.data import

dataset

random.seed(1)

rmb_label =

class

rmbdataset(dataset):

def__init__(self, data_dir, transform=none):

"""rmb面額分類任務的dataset

:param data_dir: str, 資料集所在路徑

:param transform: torch.transform,資料預處理

"""self.label_name =

self.data_info = self.get_img_info(data_dir) #

data_info儲存所有路徑和標籤,在dataloader中通過index讀取樣本

self.transform =transform

def__getitem__

(self, index):

path_img, label =self.data_info[index]

img = image.open(path_img).convert('

rgb') #

0~255

if self.transform is

notnone:

img = self.transform(img) #

在這裡做transform,轉為tensor等等

return

img, label

def__len__

(self):

return

len(self.data_info)

@staticmethod

defget_img_info(data_dir):

data_info =list()

for root, dirs, _ in

os.walk(data_dir):

#遍歷類別

#遍歷for i in

range(len(img_names)):

img_name =img_names[i]

path_img =os.path.join(root, sub_dir, img_name)

label =rmb_label[sub_dir]

return data_info

3.transforms

torch.transforms:常用影象處理方法

資料中心化  資料標準化  縮放  裁剪  旋轉  翻轉  填充  雜訊新增  灰度轉換  線性變換  仿射變換  亮度、飽和度及對比度

PyTorch資料讀取

torch.utils.data.dataloader torch.utils.data.dataset,batch size,shuffle,num workers,pin memory 關鍵是這兩個類 torch.utils.data.dataloader torch.utils.data.da...

pytorch讀取coco資料集

yolov3 an incremental improvement 原理在該篇部落格就寫的很詳細了,這裡就不贅述了 bin bash credit clone coco api git clone cd coco mkdir images cd images download images wget...

Pytorch 讀取大資料集

記錄一下pytorch讀取大型資料集的要點 pytorch 讀取大資料集的一般方法 class mydataset data.dataset def init self,root filepath self.root root init 中讀取檔案路徑而非檔案本體 self.imgs list se...