加载Doc2Vec模型时遇AttributeError:对象无'dv'属性求助
解决Doc2Vec加载时AttributeError: 'Doc2Vec' object has no attribute 'dv'的问题
核心原因是gensim版本间的属性名变更:
- gensim 4.0.0及以后,文档向量的访问属性是
dv - gensim 3.x及更早版本,对应的属性是
docvecs
- gensim 4.0.0及以后,文档向量的访问属性是
具体解决步骤:
- 先确认Colab上训练模型时使用的gensim版本,在Colab执行:
import gensim print(gensim.__version__) - 本地环境安装与训练版本完全一致的gensim:
- 如果训练版本是3.x,本地装对应版本(比如3.8.6),然后把代码里的
model.dv替换成model.docvecs - 如果训练版本是4.x,本地装对应4.x版本,保持
model.dv的写法即可
- 如果训练版本是3.x,本地装对应版本(比如3.8.6),然后把代码里的
- 想写兼容多版本的代码,可以加版本判断:
import gensim model = gensim.models.Doc2Vec.load('banana_doc2vec.model') # 根据gensim版本选择对应的属性 doc_vecs = model.dv if gensim.__version__ >= '4.0.0' else model.docvecs - 额外检查:确保模型文件
banana_doc2vec.model是完整的,训练时是用model.save()方法保存的,没有损坏。
- 先确认Colab上训练模型时使用的gensim版本,在Colab执行:
内容的提问来源于stack exchange,提问作者Migo
相关产品推荐
相关产品推荐

