DataLoader中的Pytorch RNN内存分配错误

问题描述:

我在Pytorch中编写了一个RNN。 我有下面的代码行:DataLoader中的Pytorch RNN内存分配错误

data_loader = torch.utils.data.DataLoader(
    data, 
    batch_size=args.batch_size, 
    shuffle=True, 
    num_workers=args.num_workers, 
    drop_last=True) 

如果我设置num_workers为0,我得到一个分段错误。 如果我设置num_workers到> 0,那么我回溯:

Traceback (most recent call last): 
File "rnn_model.py", line 352, in <module> 
train_model(train_data, dev_data, test_data, model, args) 
File "rnn_model.py", line 212, in train_model 
loss = run_epoch(train_data, True, model, optimizer, args) 
File "rnn_model.py", line 301, in run_epoch 
for batch in tqdm.tqdm(data_loader): 
File "/home/username/miniconda3/lib/python2.7/site-packages/tqdm/_tqdm.py", 
line 872, in __iter__ 
for obj in iterable: 
File "/home/username/miniconda3/lib/python2.7/site- 
packages/torch/utils/data/dataloader.py", line 303, in __iter__ 
return DataLoaderIter(self) 
File "/home/username/miniconda3/lib/python2.7/site- 
packages/torch/utils/data/dataloader.py", line 162, in __init__ 
w.start() 
File "/home/username/miniconda3/lib/python2.7/multiprocessing/process.py", line 130, in start 
self._popen = Popen(self) 
File "/home/username/miniconda3/lib/python2.7/multiprocessing/forking.py", line 121, in __init__ 
self.pid = os.fork() 
OSError: [Errno 12] Cannot allocate memory 

您要加载更多的数据比你的系统可以在其RAM举行。 您既可以尝试加载部分数据,也可以使用/写入仅加载当前批处理所需数据的数据加载器。

我的猜测是,无论价值批量大小和通过参数的工人数量是铸造或曲解。

请将它们打印出来,并确保您获得了您通过的值。