OSError:[Errno 22]使用torch.load时参数无效

问题描述

我正在尝试加载我的数据集,并且该数据集之前一直在工作,但是突然间该错误开始出现。

当我尝试像这样加载它时:

  train_set = Database_load(root = "C:\\Users\\Public\\PhysNet\\",train = "train.pth")

它给了我以下错误


  File "C:\Users\Public\Lucas\PhysNet\modt.py",line 185,in <module>
    train_set = Database_load(root = "C:\\Users\\Public\\Lucas\\PhysNet\\",train = "train.pth")

  File "C:\Users\Public\Lucas\PhysNet\database_load.py",line 21,in __init__
    self.data,self.y1,self.y2= torch.load(os.path.join(self.root,self.train))

  File "C:\ProgramData\Anaconda3\envs\project\lib\site-packages\torch\serialization.py",line 386,in load
    return _load(f,map_location,pickle_module,**pickle_load_args)

  File "C:\ProgramData\Anaconda3\envs\project\lib\site-packages\torch\serialization.py",line 580,in _load
    deserialized_objects[key]._set_from_file(f,offset,f_should_read_directly)

OSError: [Errno 22] Invalid argument

输入路径时,我也尝试执行以下操作,但没有成功:

  train_set = Database_load(root = r"C:\\Users\\Public\\PhysNet\\",train = "train.pth")
  train_set = Database_load(root = r'C:/Users/Public/PhysNet/',train = 'train.pth')

关于如何解决此问题的任何建议?

解决方法

这是由Issue#26998引起的已知问题(Issue#PR#20900)。发生问题是因为您试图加载大于2GB的文件,并且该文件特定于Windows,其中Windows XP的“ sizeof(long)=4对于32位和64系统系统”。此问题已由PR#27069解决,仅在PyTorch 1.3+中可用。因此,要解决此问题,请升级您的PyTorch版本。