К сброс 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