pytorch同时让两个dataloader打乱的顺序是相同的

有两个数据集,一个是干净的,一个是加入了噪声,希望在shuffle=True的情况下取出的数据还是一一对应的。

加载两个数据集:

trainloader_noise=torch.utils.data.DataLoader(trainloader_noise,batch_size=args.batch_size,shuffle=True,num_workers=args.n_cpu,drop_last=True)

trainloader_clean=torch.utils.data.DataLoader(trainloader_clean,batch_size=args.batch_size,shuffle=True,num_workers=args.n_cpu,drop_last=True)

for (num,(data_noise,labels)),(num1,(data_clean,labels1)) in zip(enumerate(loader_clean,start=1),enumerate(loader_noise,start=1))取出。

参考pytorch怎么同时让两个dataloader打乱的顺序是相同的? - 知乎

以及Reproducibility — PyTorch 1.10 documentation

可以在两个dataloader实例化之前加入

g=torch.Generator()

g.manual_seed(0)

然后在dataloader中加入参数g

trainloader_noise=torch.utils.data.DataLoader(trainloader_noise,batch_size=args.batch_size,shuffle=True,num_workers=args.n_cpu,drop_last=True,generator=g)

trainloader_clean=torch.utils.data.DataLoader(trainloader_clean,batch_size=args.batch_size,shuffle=True,num_workers=args.n_cpu,drop_last=True,generator=g)

就可以使得两个dataloader的打乱顺序一致

你可能感兴趣的:(pytorch,深度学习,人工智能)