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.
Answers:
Change lines 177
and 182
of train.py
from num_workers=11
to num_workers=0
. Windows has limit on the Pickle loader.
set num_workers =0 in line 177 and 182
it should work fine
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.
Change lines 177
and 182
of train.py
from num_workers=11
to num_workers=0
. Windows has limit on the Pickle loader.
set num_workers =0 in line 177 and 182
it should work fine