2017-10-28 30 views
0

PytorchでRNNを作成しています。私は0にnum_workersを設定した場合、私はセグメンテーションフォールトを取得し、Pytorch DataLoaderのRNNメモリ割り当てエラー

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

: は、私は次のコード行を持っています。 私は> 0にnum_workersを設定した場合、私はトレースバックを持っている:

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 

答えて

0

あなたは、あなたのシステムがRAMに保持することができるよりも多くのデータをロードしようとしています。 データの一部のみをロードするか、現在のバッチに必要なデータのみをロードするデータローダを使用/書き込みできます。

0

私の推測は、バッチサイズとargsを通過するワーカーの数量がキャストされているか、誤解されていると思います。

印刷して渡された値が得られていることを確認してください。