DataLoader - перетасовать неявные пары - PullRequest
0 голосов
/ 05 сентября 2018

Есть ли способ обработать DataLoader как список? Идея состоит в том, что я хочу перетасовать неявные пары изображений, не устанавливая перетасовку в True

В принципе, у меня есть, например, 10 сцен, каждая из которых содержит, скажем, 100 последовательностей, поэтому они представлены в каталоге как

'1_1.png', '1_2.png', '1_3.png', '....., '2_1.png', '2_2.png', '2_3.png', ...., '3_1.png', '3_2.png', '3_3.png', ..., ...., '10_1.png', '10_2.png', '10_3.png', ...

Я не хочу полной перестановки данных, я просто хочу перетасовать, но сохранить пары, чтобы они отображались в загрузчике данных как

[ '1_3.png', '1_4.png', '2_2.png', '2_3.png', '10_1.png', '10_2.png', '1_2.png', '1_3.png', ...] и так далее

Пожалуйста, посмотрите на этот вопрос , который я уже задавал по Переполнение стека касательно перетасовки массива неявных пар, где вы можете понять, что я имею в виду

В качестве примера: если это список

L = [['1_1'],['1_2'],['1_3'],['1_4'],['1_5'],['1_6'],['2_1'],['2_2'],['2_3'],['2_4'],['2_5'],['2_6'],['3_1'],['3_2'],['3_3'],['3_4'],['3_5'],['3_6']]

тогда это вывод

[['1_2'], ['1_3'], ['2_1'], ['2_2'], ['2_4'], ['2_5'],
 ['2_2'], ['2_3'], ['1_3'], ['1_4'], ['3_4'], ['3_5'],
 ['3_3'], ['3_4'], ['3_2'], ['3_3'], ['1_6'], ['2_1'],
 ['2_5'], ['2_6'], ['2_6'], ['3_1'], ['1_4'], ['1_5'],
 ['1_1'], ['1_2'], ['2_3'], ['2_4'], ['1_5'], ['1_6'],
 ['3_1'], ['3_2'], ['3_5'], ['3_6']]

Я хочу добиться того же для DataLoader

Основная идея заключается в том, что я хочу обучить свою сеть на последовательных кадрах, но она не должна быть полной последовательностью, но, по крайней мере, мне нужен каждый шаг, есть две последовательности

1 Ответ

0 голосов
/ 05 сентября 2018

Я думаю, что вы ищете data.Sampler: вместо полностью случайного шаффла по умолчанию data.DataLoader вы можете предоставить свой собственный "сэмплер", который сэмплирует примеры из ваших Dataset.
Глядя на входные параметры data.DataLoader:

сэмплер (Sampler, опционально) - определяет стратегию получения образцов из набора данных. Если указано, shuffle должно быть False.

Я думаю, что хорошей отправной точкой для этого является слишком взглянуть на код data.SubsetRandomSampler.

...