Редактировать: Загрузчики данных 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