inf*_*nge 1 iterable deterministic pytorch dataloader
Pytorch Dataloader 的迭代顺序是否保证相同(在温和条件下)?
例如:
dataloader = DataLoader(my_dataset, batch_size=4,
shuffle=True, num_workers=4)
print("run 1")
for batch in dataloader:
print(batch["index"])
print("run 2")
for batch in dataloader:
print(batch["index"])
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试对其进行测试,但它似乎没有修复,两次运行的顺序相同。有没有办法使订单相同?谢谢
编辑:我也试过做
unlabeled_sampler = data.sampler.SubsetRandomSampler(unlabeled_indices)
unlabeled_dataloader = data.DataLoader(train_dataset,
sampler=unlabeled_sampler, batch_size=args.batch_size, drop_last=False)
Run Code Online (Sandbox Code Playgroud)
然后遍历数据加载器两次,但结果是相同的不确定性。
简短的回答是否定的,当 ashuffle=True
的迭代顺序DataLoader
在迭代之间不稳定时。每次在加载器上迭代时,内部RandomSampler
都会创建一个新的随机顺序。
获得稳定混洗的一种方法DataLoader
是Subset
使用混洗的索引集创建数据集。
shuffled_dataset = torch.utils.data.Subset(my_dataset, torch.randperm(len(my_dataset)).tolist())
dataloader = DataLoader(shuffled_dataset, batch_size=4, num_workers=4, shuffled=False)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4048 次 |
最近记录: |