Python Gensim:调用docvecs.most_会产生错误

Python Gensim:调用docvecs.most_会产生错误,python,numpy,gensim,Python,Numpy,Gensim,当我调用文档上最相似的docvecs.most___时,我得到一个错误AttributeError:'list'对象没有属性'shape': # load model from file from gensim.models.doc2vec import Doc2Vec model_doc2vec = Doc2Vec.load("/path_to_file/doc2vec.bin") # attempt to get most similar documents from docvec tok

当我调用文档上最相似的docvecs.most___时,我得到一个错误
AttributeError:'list'对象没有属性'shape'

# load model from file
from gensim.models.doc2vec import Doc2Vec
model_doc2vec = Doc2Vec.load("/path_to_file/doc2vec.bin")

# attempt to get most similar documents from docvec
tokens = "in space".split()
new_vector = model_doc2vec.infer_vector(tokens)
sims = model_doc2vec.docvecs.most_similar( positive=[new_vector], topn=10 )
这将生成
AttributeError:“list”对象没有属性“shape”

我有一种预感,这可能与numpy和gensim版本的兼容性有关。我使用的是Python 3.6、numpy 1.14和gensim 1.0.1

完全错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-37-220db2331e84> in <module>()
----> 1 sims = model_doc2vec.docvecs.most_similar( positive=[new_vector], topn=10 )

~/doc2vec.py in most_similar(self, positive, negative, topn, clip_start, clip_end, indexer)
    436         there was chosen to be significant, such as more popular tag IDs in lower indexes.)
    437         """
--> 438         self.init_sims()
    439         clip_end = clip_end or len(self.doctag_syn0norm)
    440 

~/doc2vec.py in init_sims(self, replace)
    419                         mode='w+', shape=self.doctag_syn0.shape)
    420                 else:
--> 421                     self.doctag_syn0norm = empty(self.doctag_syn0.shape, dtype=REAL)
    422                 np_divide(self.doctag_syn0, sqrt((self.doctag_syn0 ** 2).sum(-1))[..., newaxis], self.doctag_syn0norm)
    423 

AttributeError: 'list' object has no attribute 'shape'
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
---->1 sims=model_doc2vec.docvecs.most_相似(正=[new_vector],topn=10)
最相似的~/doc2vec.py(self、positive、negative、topn、clip\u start、clip\u end、indexer)
436选择了有意义的标记,例如较低索引中更流行的标记ID。)
437         """
-->438 self.init_sims()
439 clip\u end=clip\u end或len(self.doctag\u syn0norm)
440
初始化模拟程序中的~/doc2vec.py(自身,替换)
419 mode='w+',shape=self.doctag_syn0.shape)
420其他:
-->421 self.doctag\u syn0norm=空(self.doctag\u syn0.shape,dtype=REAL)
422 np_除法(self.doctag_syn0,sqrt((self.doctag_syn0**2.sum(-1))[…,newaxis],self.doctag_syn0norm)
423
AttributeError:“列表”对象没有属性“形状”

删除临时培训数据(保留doctags向量=True, 保持推理为真)
丢弃训练和测试中使用的参数 得分。如果你确定你已经完成了模特训练,就使用

参数:keep_doctags_vectors(bool,可选)–如果 您不想保存doctags向量。在这种情况下,您将无法保存 能够使用大多数相似性()方法、相似性()方法等。保持推理 (bool,可选)–如果不想存储参数,则设置为False 用于推断向量()方法的


错误消息似乎更像是代码需要一个具有属性
shape
的numpy数组,但却得到了一个列表。为什么要使用这么旧的gensim版本?它现在是3.5.0。我已经尝试了多个版本的gensim,包括gensim 3.5。我还没有尝试过Python 2.7t、 虽然.FWIW,但我尝试了Python 2.7,但很可能培训数据已被删除(并且没有/无法由模型重建)。推断仍然适用于我,这是所需的功能。