_pickle.UnpicklingError: unpickling stack underflow

  • Post author:
  • Post category:其他


参考于:


linux载入pytorch的预训练模型时遇到_pickle.UnpicklingError: unpickling stack underflow


https://blog.csdn.net/InkBamboo920/article/details/107434244





Bug

想要下载预训练模型resnet18时,遇到了以下报错,

这个解决方案也适合与其他下载骨干网络未完成,导致的此问题

Traceback (most recent call last):
...
magic_number = pickle_module.load(f)
_pickle.UnpicklingError: unpickling stack underflow





问题原因

这个问题是由于先前已经缓存了resnet18模型的一部分,但是没有缓存完毕,导致临时文件夹中存在部分不完整的模型,载入失败。

解决方法是删除原来临时文件夹中的resnet18模型。





解决方法



liunx

liunx下,未下载完的预训练模型一般在以下两种位置

/home/user/.cache/torch/checkpoints

或者

/home/user/.torch/models

路径中的

user

是你的用户名,请按照你的用户名进行更改。

不同系统的具体路径不同,可以两个都尝试一下。直接用ls命令可能无法查看到

~/.cache

或者

~/.torch

这类隐藏文件夹,直接cd进入目录即可。

删除下载了一半的模型,并且记得定义新的临时文件夹,再次运行代码,解决问题。



windows

windows下,我的是位于这个文件夹下:

C:\Users\fuwen\AppData\Roaming\SPB_Data\.cache\torch\checkpoints


如果不是的话,

可以尝试一下下载不同的模型,会显示下载到的文件夹,这里我resnet18报错,我就下载了resnet34,显示如下:



版权声明:本文为qq_38156104原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。