Gensim:加载doc2vec模型时出错?

问题描述 投票:0回答:1

训练后将我的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中搜索了此错误,但未找到任何内容,请对此提供帮助。

python-3.x doc2vec
1个回答
0
投票
您可能不希望以这种方式使用gensim.test.utils.get_tmpfile功能。它只是在系统的“临时”目录内创建一个文件名-在某些情况下,该文件名可能会随着时间的推移而更改,并且在某些系统上,有时会自动清除较旧的文件。如果您需要保存模型以供将来重用,最好将其保存在您控制的明确位置。

就是说,如果只是短暂需要,该位置应该可以正常工作,就像在以短期顺序创建,保存,加载和删除文件的全周期测试中一样。但是,在这种情况下,您应该保留保存例程创建的确切文件路径,然后重新使用该确切名称-而不是两次调用get_tmpfile()

如果Doc2Vec .save()已经正确完成,那么我不会期望看到这种错误。

您确定"model_d2v_version_002"文件是使用.save()保存的,没有错误吗? (您是否有保存时间的日志记录输出,确认成功?)

保存后,是否可以通过列出该目录中的所有文件来验证其在选定位置的存在(以及可能的支持文件)?

© www.soinside.com 2019 - 2024. All rights reserved.