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
import3.transformsosimport
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
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...