Я пытаюсь обучить свою модель, используя 2 загрузчика данных из 2 разных наборов данных.
Я нашел, как настроить это, используя cycle() and zip()
, потому что мои наборы данных не такой же длины отсюда: Как выполнить итерацию по двум загрузчикам данных одновременно с помощью pytorch?
File "/home/Desktop/example/train.py", line 229, in train_2
for i, (x1, x2) in enumerate(zip(cycle(train_loader_1), train_loader_2)):
File "/home/.conda/envs/3dcnn/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 346, in __next__
data = self.dataset_fetcher.fetch(index) # may raise StopIteration
File "/home/.conda/envs/3dcnn/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 47, in fetch
return self.collate_fn(data)
File "/home/.conda/envs/3dcnn/lib/python3.7/site-packages/torch/utils/data/_utils/collate.py", line 80, in default_collate
return [default_collate(samples) for samples in transposed]
File "/home/.conda/envs/3dcnn/lib/python3.7/site-packages/torch/utils/data/_utils/collate.py", line 80, in <listcomp>
return [default_collate(samples) for samples in transposed]
File "/home/.conda/envs/3dcnn/lib/python3.7/site-packages/torch/utils/data/_utils/collate.py", line 56, in default_collate
return torch.stack(batch, 0, out=out)
RuntimeError: [enforce fail at CPUAllocator.cpp:64] . DefaultCPUAllocator: can't allocate memory: you tried to allocate 154140672 bytes. Error code 12 (Cannot allocate memory)
Я попытался решить эту проблему, установив num_workers=0
, уменьшив размер пакета, используя pinned_memory=False
и _5 _... Но ничего из этого не сработало ... У меня 256 ГБ ОЗУ и 4 графических процессора NVIDIA TESLA V100.
Я попытался запустить его, просто не тренируясь в двух загрузчиках данных одновременно, а по отдельности, и это сработало. Однако для моего проекта мне нужно это параллельное обучение с двумя наборами данных ...