我很困惑pytorch中DataLoader的洗牌顺序。
假设我有一个数据集:
在场景一中,代码如下:
datasets = [0,1,2,3,4]
在场景一中,代码如下:
torch.manual_seed(1)
G = torch.Generator()
G.manual_seed(1)
ran_sampler = RandomSampler(data_source=datasets,generator=G)
dataloader = DataLoader(dataset=datasets,sampler=ran_sampler)
洗牌结果为0,4,2,3,1
。
在方案二中,代码如下:
torch.manual_seed(1)
G = torch.Generator()
G.manual_seed(1)
ran_sampler = RandomSampler(data_source=datasets)
dataloader = DataLoader(dataset=datasets, sampler=ran_sampler, generator=G)
洗牌的结果为1,3,4,0,2
。
在第三种情况下,代码如下:
torch.manual_seed(1)
G = torch.Generator()
G.manual_seed(1)
ran_sampler = RandomSampler(data_source=datasets, generator=G)
dataloader = DataLoader(dataset=datasets, sampler=ran_sampler, generator=G)
这里的洗牌结果是 4,1,3,0,2
。
有人能解释一下这是怎么回事吗?
ran_sampler = RandomSampler(data_source=datasets)
。您没有在ran_sampler
初始化中指定生成器关键字参数,因此它是使用默认生成器进行初始化的。 - TQCH