我使用Python2训练了一个doc2vec模型,我想在Python3中使用它。
当我尝试在Python 3中加载它时,我得到:
with open('my_doc2vec.pkl', 'rb') as inf:
data = pickle.load(inf)
data.save('my_doc2vec_python3.pkl')
这似乎与腌制兼容性问题有关,我试图通过这样做来解决:
de = Doc2Vec.load('my_doc2vec_python3.pkl')
Gensim保存了我重命名的其他文件,因此在调用
时可以找到它们form {
display: block;
margin: 0 auto;
width: 1024px;
height:768px;
}
使用UnicodeDecodeError,load()不会失败,但推理后会提供毫无意义的结果。
我无法使用Gensim在Python 3中轻松地重新训练它,因为我使用此模型从中创建派生数据,因此我将不得不重新运行一个冗长而复杂的管道。
如何让doc2vec模型与Python 3兼容?
答案 0 :(得分:2)
回答我自己的问题,answer为我工作。
以下是更多细节的步骤:
,编辑方法unpickle以添加编码参数:
return _pickle.loads(f.read(), encoding='latin1')
使用Python 3和修改后的gensim,加载模型:
de = Doc2Vec.load('my_doc2vec.pkl')
保存:
de.save('my_doc2vec_python3.pkl')
此模型现在应该可以在Python 3中加载未经修改的gensim。