EOFError: Ran out of input (CNN model)

Question:

I’m following a tutorial on how to build CNN’s for MRI.

I’m attempting to train the model myself and I’ve got a "data" folder in the folder where the files are (downloaded from his github) but when I try to train the model I get an error.

I run this in a CMD: python train.py -t acl -p sagittal --epochs=20 --prefix_name=one

However it returns:

    (Pytorch) C:UsersGlaDOSmrnet>python train.py -t acl -p sagittal --epochs=20 --prefix_name=one
Traceback (most recent call last):
  File "train.py", line 277, in <module>
    run(args)
  File "train.py", line 214, in run
    mrnet, train_loader, epoch, num_epochs, optimizer, writer, current_lr, log_every)
  File "train.py", line 34, in train_model
    for i, (image, label, weight) in enumerate(train_loader):
  File "C:UsersGlaDOSanaconda3envsPytorchlibsite-packagestorchutilsdatadataloader.py", line 279, in __iter__
    return _MultiProcessingDataLoaderIter(self)
  File "C:UsersGlaDOSanaconda3envsPytorchlibsite-packagestorchutilsdatadataloader.py", line 719, in __init__
    w.start()
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingprocess.py", line 112, in start
    self._popen = self._Popen(self)
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingcontext.py", line 223, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingcontext.py", line 322, in _Popen
    return Popen(process_obj)
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingpopen_spawn_win32.py", line 89, in __init__
    reduction.dump(process_obj, to_child)
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingreduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'run.<locals>.<lambda>'

(Pytorch) C:UsersGlaDOSmrnet>Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingspawn.py", line 105, in spawn_main
    exitcode = _main(fd)
  File "C:UsersGlaDOSanaconda3envsPytorchlibmultiprocessingspawn.py", line 115, in _main
    self = reduction.pickle.load(from_parent)
EOFError: Ran out of input

I’m sorta stranded on this unfortunately. Does anyone recognize what could be happening here? I’m assuming it’s some setting on my end that doesn’t allow the model to run as I haven’t changed anything in his original code.

Asked By: user3078100

||

Answers:

Change lines 177 and 182 of train.py from num_workers=11 to num_workers=0 . Windows has limit on the Pickle loader.

Answered By: ZWang

set num_workers =0 in line 177 and 182
it should work fine