现在,我想将数据集分为两部分:火车集和验证集。我知道,在一个GPU上,我可以使用一个采样器来完成这个任务:
indices = list(range(len(train_data)))
train_loader = torch.utils.data.DataLoader(
train_data, batch_size=args.batch_size,
sampler=torch.utils.data.sampler.SubsetRandomSampler(indices[:split]),
pin_memory=True, num_workers=2)
但是当我想用torch.distributed
并行地训练它时,我必须使用另一个取样器,即sampler = torch.utils.data.distributed.DistributedSampler(train_data)
。
那么,我应该如何使用这两个采样器,以便将数据集划分并同时分发?
非常感谢您的帮助!
发布于 2020-05-15 10:04:34
您可以在创建torch.utils.data.Dataset
之前拆分torch.utils.data.DataLoader
。
只需像这样使用拆分:
train, validation =
torch.utils.data.random_split(
dataset,
(len(dataset)-val_length, val_length)
)
这将为您提供两个单独的数据集,这些数据集可以与数据器一起使用,但是您希望如此。
https://stackoverflow.com/questions/61816158
复制相似问题