gpt4 book ai didi

python - 无法在 Python 中加载以前转储的 pickle 文件

转载 作者:行者123 更新时间:2023-11-28 18:45:18 25 4
gpt4 key购买 nike

我使用的实现算法非常繁重,包含三个部分。因此,我使用 pickle 来转储各个阶段之间的所有内容,以便分别在每个阶段进行测试。

虽然第一个转储总是工作正常,但第二个转储的行为似乎取决于大小。它适用于较小的数据集,但不适用于较大的数据集。 (我尝试创建的热图实际上也发生了同样的情况,但这是一个不同的问题)转储文件大约 10MB,所以它并不大。

产生问题的转储包含一个完整的类,而这个类又包含方法、字典、列表和变量。

我实际上尝试过从类内外倾倒,但都失败了。我使用的代码如下所示:

data = pickle.load(open("./data/tmp/data.pck", 'rb')) #Reads from the previous stage dump and works fine.
dataEvol = data.evol_detect(prevTimeslots, xLablNum) #Export the class to dataEvol
dataEvolPck = open("./data/tmp/dataEvol.pck", "wb") #open works fine
pickle.dump(dataEvol, dataEvolPck, protocol = 2) #dump works fine
dataEvolPck.close()

甚至尝试过这个:

dataPck = open("./data/tmp/dataFull.pck", "wb")
pickle.dump(self, dataPck, protocol=2) #self here is the dataEvol in the previous part of code
dataPck.close()

当我尝试使用这部分加载类时出现问题:

dataEvol = pickle.load(open("./data/tmp/dataEvol.pck", 'rb'))

手上的错误是:

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
dataEvol = pickle.load(open("./data/tmp/dataEvol.pck", 'rb'))
ValueError: itemsize cannot be zero

有什么想法吗?我在 64 位 Win-7 计算机上使用 Python 3.3。如果我遗漏了任何重要内容,请原谅我,因为这是我的第一个问题。


回答:

问题是其中一个字典中的空 numpy 字符串。谢谢珍妮!!!

最佳答案

这是最近在 pull request 中修复的一个 NumPy 错误.要重现它,请尝试:

import cPickle
import numpy as np
cPickle.loads(cPickle.dumps(np.string_('')))

关于python - 无法在 Python 中加载以前转储的 pickle 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21366954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com