Как сбросить загрузчик данных в pytorch? - PullRequest
2 голосов
/ 20 февраля 2020

Я пытался сбросить загрузчик данных вручную, но не смог. Я попробовал все здесь https://discuss.pytorch.org/t/how-could-i-reset-dataloader-or-count-data-batch-with-iter-instead-of-epoch/22902/4 но не повезло. Кто-нибудь знает, как сбросить загрузчик данных И также не нарушать суфл / случайность пакетов?

1 Ответ

1 голос
/ 21 февраля 2020

К сброс DataLoader, затем просто перечисление загрузчик снова. Каждый вызов enumerate(loader) начинается с начала.

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

def seed_init_fn(x):
   seed = args.seed + x
   np.random.seed(seed)
   random.seed(seed)
   torch.manual_seed(seed)
   return

loader = torch.utils.data.DataLoader(...., worker_init_fn = seed_init_fn)

while True:
   for i,data in enumerate(loader):
      # will always yield same data

См. worker_init_fn в документах:

https://pytorch.org/docs/master/data.html#torch .utils.data.DataLoader

Вот лучший пример:

https://github.com/pytorch/pytorch/issues/5059#issuecomment -404232359

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...