Pytorch Dataloader 随机播放多个数据集
Pytorch Dataloader shuffle with multiple dataset
我正在尝试使用多个数据集进行自定义 Dataloader
。
我的问题是,如果我在 Dataloader
选项中使用 (shuffle = True)
,是否可以在多个 Dataloader
中随机播放相同的顺序?
例如:
数据加载器 1:label = [5 , 4, 15, 16]
数据加载器 2:label = [5 , 4, 15, 16]
编辑:Pytorch 的数据加载器已经为此实现了解决方案。
看这里:https://pytorch.org/docs/stable/data.html#torch.utils.data.Sampler你可以自己指定采样器。所以你可以创建一个生成器并将其提供给所有数据加载器。
旧的(有点老套)答案:
如果保持顺序真的很重要,与其制作自定义数据加载器,不如制作自定义数据集更好。
请注意,只有当所有数据集都具有相同数量的示例时才有可能。或者不使用更大数据集的部分数据。
这些行中的某些内容应该有效:
class ManyDatasetsInOne(Dataset):
def __init__(self, **parameters):
self.dataset1 = dataset1(**parameters_1)
self.dataset2 = dataset2(**parameters_2)
def __len__(self):
return len(self.dataset1)
def __getitem__(self, index):
data1 = load_item(idx, self.dataset1)
data2 = load_item(idx, self.dataset1)
return data1, data2
我正在尝试使用多个数据集进行自定义 Dataloader
。
我的问题是,如果我在 Dataloader
选项中使用 (shuffle = True)
,是否可以在多个 Dataloader
中随机播放相同的顺序?
例如:
数据加载器 1:label = [5 , 4, 15, 16]
数据加载器 2:label = [5 , 4, 15, 16]
编辑:Pytorch 的数据加载器已经为此实现了解决方案。
看这里:https://pytorch.org/docs/stable/data.html#torch.utils.data.Sampler你可以自己指定采样器。所以你可以创建一个生成器并将其提供给所有数据加载器。
旧的(有点老套)答案:
如果保持顺序真的很重要,与其制作自定义数据加载器,不如制作自定义数据集更好。
请注意,只有当所有数据集都具有相同数量的示例时才有可能。或者不使用更大数据集的部分数据。
这些行中的某些内容应该有效:
class ManyDatasetsInOne(Dataset):
def __init__(self, **parameters):
self.dataset1 = dataset1(**parameters_1)
self.dataset2 = dataset2(**parameters_2)
def __len__(self):
return len(self.dataset1)
def __getitem__(self, index):
data1 = load_item(idx, self.dataset1)
data2 = load_item(idx, self.dataset1)
return data1, data2