运行torch.load加载模型文件报错OSError: [Errno 22]如何解决?
解决PyTorch加载模型时的OSError路径错误
这个问题我之前也踩过坑,本质是Python字符串的转义机制在搞鬼!
错误原因
你写的路径'..\10_epoch_model_state.pt'里,\1会被Python当成八进制转义字符(对应ASCII里的退格符\x08),所以实际解析后的路径变成了'..\x08_epoch_model_state.pt',系统自然找不到这个不存在的文件,就抛出了OSError: [Errno 22] Invalid argument。
三种修复方法
随便选一种都能解决问题:
方法1:用正斜杠代替反斜杠(最推荐,跨平台通用)
state = torch.load('../10_epoch_model_state.pt', map_location=lambda storage, loc: storage)正斜杠在Windows和Linux系统下都能被Python正确识别,完全避免转义问题。
方法2:使用原始字符串(前缀加r)
在字符串前加r,Python会按字面意思处理所有字符,忽略转义:state = torch.load(r'..\10_epoch_model_state.pt', map_location=lambda storage, loc: storage)方法3:转义反斜杠(写两个反斜杠)
把单个反斜杠改成两个,让Python解析为一个普通的反斜杠:state = torch.load('..\\10_epoch_model_state.pt', map_location=lambda storage, loc: storage)
内容的提问来源于stack exchange,提问作者Fàt Hïã L'GhrîBì
相关产品推荐
相关产品推荐

