import torch
from torch.utils.data import Dataset, DataLoader
from tqdm import tqdm
class build_dataset():
def __init__(self):
self.imgs = [torch.tensor([1, 2, 3]), torch.tensor([4, 5, 6])]
self.targets = [{'boxes': torch.tensor([[12, 13, 34, 35], [123, 124, 788, 789]]).reshape(-1, 4),
'label': torch.tensor(int(2))},
{'boxes': torch.tensor([[112, 113, 314, 315], [103, 104, 720, 799]]).reshape(-1, 4),
'label': torch.tensor(int(0))}
]
def __len__(self):
return len(self.imgs)
def __getitem__(self, idx):
return self.imgs[idx], self.targets[idx]
# 输出一:
train_dataset = build_dataset()
train_dataLoader = DataLoader(train_dataset, batch_size=2, shuffle=True)
for input, label in tqdm(train_dataLoader):
print(input)
print(label)
# 输出二:
# x = [[0,3,4],[2,3,4],[2,4,1]]
# y = [[1,3,4],[2,3,4],[2,4,1]]
# z = [[2,3,4],[2,3,4],[2,4,1]]
# mm = (x,y,z)
# print(mm)
# print(*mm)
# a,b,c = list(zip(*mm))
# a1,b1,c1 = list(zip(mm))
# print('*mm'.center(100,'-'))
# print(a)
# print(b)
# print(c)
#
# print('mm'.center(100,'-'))
# print(a1)
# print(b1)
# print(c1)
输出一:

输出二:

zip()后面一般都接独立分开的迭代器,而像上面的那种zip(mm)就相当于zip([x,y,z]),可以理解为 zip([x,y,z], []),那么list后自然会把x,y,z打印出来

暗藏玄机:

继承torchvision.datasets.cocoDectection类,从路径中读取到img、target。对于coco数据集,datasets中的cocoDectection类可以直接完成img和target的提取。

