训练后将我的Doc2Vec模型存储到磁盘中,然后当我尝试从磁盘中加载模型时,它显示了一些错误
from gensim.models.doc2vec import Doc2Vec
from gensim.test.utils import get_tmpfile
def save_d2v_to_disk(model,fname):
fn = get_tmpfile(fname)
model.save(fn)
def load_d2v_from_disk(fname):
fn = get_tmpfile(fname)
model = Doc2Vec.load(fname)
return model
错误给了我
>>> model = load_d2v_from_disk("model_d2v_version_002")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in load_d2v_from_disk
File "/usr/lib64/python2.7/site-packages/gensim/models/doc2vec.py", line 1113, in load
return super(Doc2Vec, cls).load(*args, **kwargs)
File "/usr/lib64/python2.7/site-packages/gensim/models/base_any2vec.py", line 1244, in load
model = super(BaseWordEmbeddingsModel, cls).load(*args, **kwargs)
File "/usr/lib64/python2.7/site-packages/gensim/models/base_any2vec.py", line 603, in load
return super(BaseAny2VecModel, cls).load(fname_or_handle, **kwargs)
File "/usr/lib64/python2.7/site-packages/gensim/utils.py", line 426, in load
obj = unpickle(fname)
File "/usr/lib64/python2.7/site-packages/gensim/utils.py", line 1386, in unpickle
return _pickle.loads(f.read())
cPickle.UnpicklingError: invalid load key, '-'.
>>>
我在Google中搜索了此错误,但未找到任何内容,请帮我解决这个问题。
答案 0 :(得分:0)
您可能不希望以这种方式使用gensim.test.utils.get_tmpfile
函数。它只是在系统的“临时”目录内创建一个文件名-在某些情况下,该文件名可能会随着时间的推移而更改,并且在某些系统上,有时会自动清除较旧的文件。如果您需要保存模型以供将来重用,最好将其保存在您控制的明确位置。
也就是说,如果只是短暂需要,则该位置应该可以正常工作,例如在以短期顺序创建,保存,加载和删除文件的全周期测试中。但是,在这种情况下,您应该保留保存例程创建的确切文件路径,然后重新使用该确切名称-而不是两次调用get_tmpfile()
。
如果Doc2Vec
.save()
正确地完成了操作,那么我不会马上看到这种错误。
您确定"model_d2v_version_002"
文件是使用.save()
保存的,没有错误吗? (您是否有保存时间的日志记录输出,确认成功?)
保存后,是否可以通过列出该目录中的所有文件来验证其在选定位置的存在(以及可能的支持文件)?