首页 > 编程问答 >取消pickle错误:magic_number = pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError:无效的加载键,&

取消pickle错误:magic_number = pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError:无效的加载键,&

时间:2024-07-28 13:14:32浏览次数:14  
标签:python python-3.x pytorch pickle

当我尝试加载 .pt 文件时,我看到以下错误,

str1='Dataset/ALL_feats_cgqa.pt'
m = torch.load(str1)

错误如下,

  File "/home/Storage1/pythonCodeArea/train.py", line 21, in load_embeddings
    m = torch.load(str1)
  File "/home/.local/lib/python3.10/site-packages/torch/serialization.py", line 1040, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "/home/.local/lib/python3.10/site-packages/torch/serialization.py", line 1262, in _legacy_load
    magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, 'v'.

我不知道此错误。任何帮助将不胜感激。

我已经浏览了这些参考资料,但没有任何解决方案, [1] [2] [3] [4]


这个错误信息 " _pickle.UnpicklingError: invalid load key, 'v'." 通常意味着你正在尝试使用一个不兼容的 pickle 协议来加载一个 pickle 文件。它可能是在不同版本的 Python 或 PyTorch 下创建的。

以下是可能解决这个问题的步骤:

1. 检查 Python 和 PyTorch 版本:

  • 确保用于保存 .pt 文件的 Python 和 PyTorch 版本与你当前环境中的版本相同或兼容。版本不匹配是导致 pickle 错误的常见原因。

2. 使用正确的 pickle 模块:

  • 确保在加载文件时使用与保存文件时相同的 pickle 模块。例如,如果你使用 pickle 模块保存了文件,请确保使用 pickle 模块加载它,而不是使用 cloudpickle 或其他 pickle 库。

3. 检查文件是否损坏:

  • 确保 .pt 文件没有损坏。尝试使用其他程序(如文本编辑器)打开该文件,看看是否可以读取其内容。如果文件已损坏,则需要使用备份副本或重新创建该文件。

4. 使用较低版本的 pickle 协议保存文件:

  • 如果你无法升级到相同版本的 Python 或 PyTorch,请尝试使用较低版本的 pickle 协议保存 .pt 文件。你可以通过在调用 torch.save() 函数时传递 pickle_protocol 参数来实现此目的。例如,要使用 pickle 协议版本 4 保存文件,可以使用以下代码:
torch.save(your_object, 'your_file.pt', pickle_protocol=4)

5. 尝试使用 'encoding' 参数加载文件:

  • 有时,文件可能以不同的编码方式保存。尝试使用 'encoding' 参数加载文件:
torch.load(str1, encoding='latin1')

如果以上方法都不起作用,请提供以下信息,以便我更好地帮助你:

  • 你正在使用的 Python 和 PyTorch 版本。
  • 保存 .pt 文件时使用的代码。
  • 完整的错误消息和回溯。
  • 你尝试过的其他解决方案。

标签:python,python-3.x,pytorch,pickle
From: 78792688

相关文章

  • AttributeError:'int'对象没有属性'index'(python)
    我正在Python上进行“猜单词”,但我无法弄清楚这个错误。AttributeError:'int'objecthasnoattribute'index'(python)它在线上给了我一个错误letterIndex=word.index(guess)defcheckLetter(word):blanks='_'*len(str(word))print('W......
  • 尝试在Python中使用for循环来输出大于或等于序列中的数字
    这是我的Python代码:largest_so_far=-1print('before',largest_so_far)forthe_numin[9,41,12,3,74,15]:ifthe_num>largest_so_far:largest_so_far=the_numprint(largest_so_far,'isbiggerthan',the_num)......
  • 如何在 wxPython 的 for 循环中添加文本输入框?
    我是wxPython的新手,正在开发一个带有GUI的基本程序,让用户标记图像。现在,当用户单击“导入”按钮时,他们可以选择一个目录。然后,代码使用matplotlib在for循环中显示该目录中的每个图像。但是,我不知道如何在for循环中访问用户输入。这就是该函数现在的样子:importmatplo......
  • 【Python】字母 Rangoli 图案
    一、题目YouaregivenanintegerN.YourtaskistoprintanalphabetrangoliofsizeN.(RangoliisaformofIndianfolkartbasedoncreationofpatterns.)Differentsizesofalphabetrangoliareshownbelow:#size3----c------c-b-c--c-b-a-b-c--c......
  • python 闭包、装饰器
    一、闭包:1.外部函数嵌套内部函数 2.外部函数返回内部函数 3.内部函数可以访问外部函数局部变量         闭包(Closure)是指在一个函数内部定义的函数,并且内部函数可以访问外部函数的局部变量,即使外部函数已经执行完毕,这种现象称为闭包。在Python中,闭包常常用......
  • 掌握 IPython %%time 魔法命令:高效测量代码块执行时间
    引言在编程和数据分析中,了解代码的执行时间是优化性能的关键步骤。IPython,作为一个强大的交互式计算环境,提供了多种工具来帮助用户测量和优化代码。其中,%%time魔法命令是IPython中用来测量代码块执行时间的便捷工具。本文将详细介绍%%time魔法命令的使用方法,并通过一......
  • 探索 IPython 中的 %%javascript 魔法命令:运行 JavaScript 代码的秘籍
    引言IPython是一个强大的交互式计算环境,它不仅支持Python语言,还通过各种魔法命令扩展了其功能。其中,%%javascript魔法命令是IPython扩展中一个非常有趣的特性,它允许用户在IPython环境中直接运行JavaScript代码。这对于需要在数据科学和科学计算中使用JavaScript......
  • pythonasm库分析,看看你和自学编程小学生的差距
    下面是pythonasm.asm库的源代码fromkeystoneimport*fromcapstoneimport*assembly_instructions=[]#储存汇编指令的列表#汇编指令写入列表defmov(reg1,reg2):assembly_instructions.append(f"mov{reg1},{reg2}")defdb(value):assembly_instructio......
  • 【Python系列】Python 中的垃圾收集:深入理解与实践
    ......
  • Python酷库之旅-第三方库Pandas(050)
    目录一、用法精讲181、pandas.Series.var方法181-1、语法181-2、参数181-3、功能181-4、返回值181-5、说明181-6、用法181-6-1、数据准备181-6-2、代码示例181-6-3、结果输出182、pandas.Series.kurtosis方法182-1、语法182-2、参数182-3、功能182-4、返回值1......