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举行。 您既可以尝试加载部分数据,也可以使用/写入仅加载当前批处理所需数据的数据加载器。
答
我的猜测是,无论价值批量大小和通过参数的工人数量是铸造或曲解。
请将它们打印出来,并确保您获得了您通过的值。