載入自己的資料

2022-06-26 06:39:11 字數 1907 閱讀 5122

pytorch輸入資料pipeline一般遵循乙個「三步走」的策略,一般pytorch 的資料載入到模型的操作順序是這樣的:

① 建立乙個 dataset 物件。必須實現__len__()、getitem()這兩個方法,這裡面會用到transform對資料集進行擴充。

② 建立乙個 dataloader 物件。它是對dataset物件進行迭代的,一般不需要事先裡面的其他方法了。

③ 迴圈遍歷這個 dataloader 物件。將img, label載入到模型中進行訓練。

第一步:建立乙個 dataset 物件。

class imgdataset(dataset):

def __init__(self, annotations_path, images_path, shape=(600, 600), data_class="cam1"):

self.shape = shape

self.images_path = images_path

self.images_name, self.images_height, self.images_width, self.images_label, self.images_bbox \

= read_data(annotations_path, data_class)

self.transform = transforms()

def __len__(self): # # # 資料集中資料的個數

return len(self.images_name)

def __getitem__(self, index): # # # 返回資料

image_path = self.images_path + self.images_name[index]

images_height = self.images_height[index]

image_width = self.images_width[index]

image_bbox = self.images_bbox[index]

img, box = self.transform(image_path, images_height, image_width, image_bbox, self.shape)

# img = self.images_data[index]

# box = self.bbox_data[index]

label = self.images_label[index]

return img, box, label

第二步:建立乙個 dataloader 物件

dataset = imgdataset() # 載入全部資料

train_set, test_set = torch.utils.data.random_split(dataset, [num_train_samples, len(dataset) - num_train_samples]) # #劃分訓練集和測試集

train_loader = dataloader(dataset=train_set, batch_size=args.batch_size, shuffle=true, num_workers=4) # 分批次劃分資料,以待餵入網路

第三步:迴圈遍歷這個 dataloader 物件

for epoch in range(args.num_epochs):

for i, (img, box, label) in enumerate(train_loader):

# forward

if i % 5 == 0:

print(f'[ | epoch: / | iter: / | img: | box: | labels: ]')

參考文章:

pytorch 載入自己的資料集

pytorch 載入自己的資料集,需要寫乙個繼承自torch.utils.data中dataset類,並修改其中的 init 方法 getitem 方法 len 方法。預設載入的都是,init 的目的是得到乙個包含資料和標籤的list,每個元素能找到位置和其對應標籤。然後用 getitem 方法得到...

實現自己的類載入器

有時候,根據自己專案的需求,需要重新實現屬於自己的類載入器,以滿足專案的靈活性和擴充套件性,下面我們就來實現自己的類載入器.實現自己的類載入器必須首先繼承乙個父類載入器.編寫乙個類載入器會涉及到以下幾個方法 1.findclass string name 根據類的路徑查詢類,必須重寫的方法 2.de...

正確的載入自己寫的dll

怎麼能讓程式正確的載入自己寫的dll 1 把dll放在程式的debug目錄下,在進行關聯。2 直接把dll放在c windows system目錄下 3 新增環境變數 a,system set path path d mydll b,bool winapi setdlldirctory lpctst...