SeungjunNah/DeepDeblur-PyTorch

RuntimeError: don't know how to restore data location of torch.FloatStorage (tagged with cpu:0)

albertyou2 opened this issue · 2 comments

MACOS 10.15.5
PYTHON :3.6.4
PYTORCH :1.7.1

HI @SeungjunNah :
I try to run demo with this code :
python main.py --device_type cpu --save_dir REDS_L1 --demo true --demo_input_dir ../input --demo_output_dir ../output
then I got an error :

===> Loading demo dataset: Demo
Loading model from ../experiment/REDS_L1/models/model-200.pt
../experiment/REDS_L1/models/model-200.pt
cpu:0
Loading optimizer from ../experiment/REDS_L1/optim/optim-200.pt
Traceback (most recent call last):
File "main.py", line 67, in
main()
File "main.py", line 64, in main
main_worker(args.rank, args)
File "main.py", line 18, in main_worker
optimizer = Optimizer(args, model)
File "/Users/youyin/Documents/AI/DeepDeblur-PyTorch/src/optim/init.py", line 148, in init
self.load(args.load_epoch)
File "/Users/youyin/Documents/AI/DeepDeblur-PyTorch/src/optim/init.py", line 198, in load
self.load_state_dict(torch.load(self._save_path(epoch), map_location=self.args.device), epoch=epoch)
File "/Users/youyin/.local/lib/python3.6/site-packages/torch/serialization.py", line 593, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/Users/youyin/.local/lib/python3.6/site-packages/torch/serialization.py", line 773, in _legacy_load
result = unpickler.load()
File "/Users/youyin/.local/lib/python3.6/site-packages/torch/serialization.py", line 729, in persistent_load
deserialized_objects[root_key] = restore_location(obj, location)
File "/Users/youyin/.local/lib/python3.6/site-packages/torch/serialization.py", line 811, in restore_location
return default_restore_location(storage, str(map_location))
File "/Users/youyin/.local/lib/python3.6/site-packages/torch/serialization.py", line 183, in default_restore_location
+ location + ")")
RuntimeError: don't know how to restore data location of torch.FloatStorage (tagged with cpu:0)

Do you have any idea about this ?Thank you !

Hi @albertyou2,

It seems like the map_location argument in the torch.load function does not support an indexed CPU device.
I changed the cpu device defined in option.py from torch.device('cpu', 0) to torch.device('cpu').
Please update the code and it should be working.
But beware that CPU inference could be very slow.

Thankyou very much!
I've solved this problem!