解决问题PytorchStreamReader failed reading zip archive
在用到一个第三方的pth模型时遇到了一个奇怪的错误,加载模型在mac和linux一切正常,但在windows上加载时就遇到了报错,报错信息较长,但最后一个提示是出在pytorch的serailization里,如下:
....
venv\lib\site-packages\torch\serialization.py:600: in load
with _open_zipfile_reader(opened_file) as opened_zipfile:
venv\lib\site-packages\torch\serialization.py:242: in __init__
super(_open_zipfile_reader, self).__init__(torch._C.PyTorchFileReader(name_or_buffer))
E RuntimeError: PytorchStreamReader failed reading zip archive: failed finding central directory
我在google也找到了很多这种信息的错误的文章,里面提到了原因是要么模型下载不完整,要么是torch和torchvision的包需要升级和匹配。可惜我试过了并不生效,也检查过模型文件是正确和完整的。
于是分平台逐步调试并对比,最终发现该模型会产生一个文件,路径是: 登录用户目录/.cache/torch/hub/checkpoints/ 下有一个pth文件,比如叫做resnet18-f37072fd.pth。在mac和linux下该文件有40M到50M,而在windows下该文件只有几M,而且在windows下要等很久(似乎跟配置有关?),于是从其他系统下拷贝该文件到windows下对应目录,然后再重启程序,一切正常了。