Загрузчик данных в наборе данных Iterable выдает скопированные пакеты для num_workers > 0Python

Программы на Python
Ответить
Anonymous
 Загрузчик данных в наборе данных Iterable выдает скопированные пакеты для num_workers > 0

Сообщение Anonymous »

Название говорит само за себя. Итерируемый набор данных с загрузчиком данных с несколькими работниками дает больше пакетов, чем следовало бы (кажется, что каждый работник выдает все пакеты отдельно). Вот MWE:

Код: Выделить всё

import torch

class ToyDataset(torch.utils.data.IterableDataset):
def __iter__(self):
data = torch.arange(len(self))
yield from data

def __len__(self):
return 386

dataset = ToyDataset()
loader = torch.utils.data.DataLoader(dataset, batch_size=256, num_workers=2)
print(len(loader), len(list(loader))) # 2 4
Я что-то упускаю? Это ошибка в pytorch (хотя это маловероятно)? И самое главное, есть ли способ обойти это?
Я также создал проблему на дискуссионных форумах pytorch, однако она не привлекла особого внимания.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -workers-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»