Pytorch Dataloader shuffle с несколькими наборами данных - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь создать пользовательский Dataloader с несколькими наборами данных.

Мой вопрос заключается в том, что если я использую (shuffle = True) в опции Dataloader, возможно ли перетасовать один и тот же порядок в несколько Dataloader?

Например:

Загрузчик данных1: label = [5 , 4, 15, 16]

Загрузчик данных2: label = [5 , 4, 15, 16]

1 Ответ

0 голосов
/ 04 апреля 2020

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