Python 数据集分发时如何划分数据集

Python 数据集分发时如何划分数据集,python,pytorch,distributed,Python,Pytorch,Distributed,现在我想将数据集分为两部分:训练集和验证集。我知道,在单个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[:spli

现在我想将数据集分为两部分:训练集和验证集。我知道,在单个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.distributed采样器(train\u data)

那么,我应该如何使用这两个采样器,以便能够分割数据集并同时分发它呢


非常感谢您的帮助

您可以在创建
torch.utils.data.DataLoader
之前拆分
torch.utils.data.Dataset

只需这样使用:

train, validation =
    torch.utils.data.random_split(
        dataset, 
        (len(dataset)-val_length, val_length)
    )

这将为您提供两个单独的数据集,可根据您的意愿与数据加载程序一起使用。

@sunshk1227标记为绿色勾号已解决。如果答案解决了您的问题,谢谢!我是新来的。:-)