1. ホーム
  2. ピトーチ

EOFError: 入力がなくなった

2022-02-27 04:12:53

Windowsでpytorchを使用してモデルを学習する際に発生する具体的なエラーは以下の通りです。

トレースバック (最新の呼び出し)。
  ファイル "train.py", 行 49, in <module>
    data_loader_iter = iter(data_loader)
  ファイル "D:\anaconda3⇄site-packages⇄utils⇄data⇄dataloader.py" 行 501
, in __iter__
    return _DataLoaderIter(self)
  ファイル "D:\anaconda3⇄site-packages⇄utils⇄dataloader.py", 行 289
, in __init__
    w.start()
  ファイル "D:\anaconda3↩multiprocessingprocess.py", line 105, in start
    self._popen = self._Popen(self)
  File "D:\anaconda3⇄multiprocessing⇄context.py", line 212, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  ファイル "D:\anaconda3⇄multiprocessing⇄context.py", 行 313, in _Popen
    return Popen(process_obj)
  File "D:\anaconda3⇄multiprocessing_popen_spawn_win32.py", line 66, in __in
it__
    reduction.dump(process_obj, to_child)
  ファイル "D:\anaconda3↩multiprocessingreduction.py", line 59, in dump
    ForkingPickler(ファイル, プロトコル).dump(obj)
_pickle.PicklingError: 0x000000001BD9E048> で <function <lambda> をピクルスにできない: a
属性検索 <lambda> on __main__ に失敗しました。
トレースバック (最も最近の呼び出し):
  ファイル "<string>", 行 1, in <module>
  File "D:\anaconda3╱multiprocessing╱spawn.py", line 106, in spawn_main
    exitcode = _main(fd)
  File "D:\anaconda3⇄multiprocessing⇄spawn.py", line 116, in _main
    self = pickle.load(from_parent)です。
EOFError: 入力がなくなった

このエラーは実はWindowsのpytorch関数 torch.utils.data.DataLoader に特有のもので、プロセス数を示す num_workers パラメータを持っています。 https://discuss.pytorch.org/t/pytorch-windows-eoferror-ran-out-of-input-when-num-workers-0/25918/2