我使用PyTorch dataset类开发了一个自定义数据集。守则是这样的:
class CustomDataset(torch.utils.data.Dataset):
def __init__(self, root_path, transform=None):
self.path = root_path
self.mean = mean
self.std = std
self.transform = transform
self.images = []
self.masks = []
for add in os.listdir(self.path):
# Some script to load file from directory and appending address to relative array
...
self.masks.sort()
self.images.sort()
def __len__(self):
return len(self.images)
def __getitem__(self, item):
image_address = self.images[item]
mask_address = self.masks[item]
if self.transform is not None:
augment = self.transform(image=np.asarray(Image.open(image_address, 'r', None)),
mask=np.asarray(Image.open(mask_address, 'r', None)))
image = Image.fromarray(augment['image'])
mask = augment['mask']
if self.transform is None:
image = np.asarray(Image.open(image_address, 'r', None))
mask = np.asarray(Image.open(mask_address, 'r', None))
# Handle Augmentation here
return image, mask然后,我从这个类创建了一个对象,并将其传递给torch.utils.data.DataLoader。虽然这在DataLoader中很好,但是对于torch.utils.data.DataLoader2,我遇到了一个问题。错误是:
dataloader = torch.utils.data.DataLoader2(dataset=dataset, batch_size=2, pin_memory=True, num_workers=4)异常:旧DataSets不支持线程并行模式
我的问题是为什么DataLoader2模块被添加到PyTorch中,DataLoader有什么不同,它的好处是什么?
PyTorch版本:1.10.1
发布于 2022-01-26 16:05:19
您绝对不应该使用它,DataLoader2。
torch.utils.data.DataLoader2 (实际上是torch.utils.data.dataloader_experimental.DataLoader2)被添加为一个实验性的“特性”,作为DataLoader的未来替代品。它被定义为这里。目前,它只能在主分支(不稳定)上访问,当然官方页面上也没有记录。
https://stackoverflow.com/questions/70865699
复制相似问题