[英]Different models with gensim Word2Vec on python
我試圖在python中應用在gensim庫中實現的word2vec模型。 我有一個句子列表(每個句子都是一個單詞列表)。
比如我們有:
sentences=[['first','second','third','fourth']]*n
我實現了兩個相同的模型:
model = gensim.models.Word2Vec(sententes, min_count=1,size=2)
model2=gensim.models.Word2Vec(sentences, min_count=1,size=2)
我意識到模型有時是相同的,有時是不同的,這取決於n的值。
例如,如果n = 100,我就獲得了
print(model['first']==model2['first'])
True
而對於n = 1000:
print(model['first']==model2['first'])
False
這怎么可能?
非常感謝你!
查看gensim
文檔 ,運行Word2Vec
時會有一些隨機化:
seed
=用於隨機數生成器。 每個單詞的初始向量用單詞+ str(種子)的串聯的散列來播種。 請注意,對於完全確定性可重現的運行,您還必須將模型限制為單個工作線程,以消除OS線程調度中的排序抖動。
因此,如果您希望獲得可重現的結果,則需要設置種子:
In [1]: import gensim
In [2]: sentences=[['first','second','third','fourth']]*1000
In [3]: model1 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2)
In [4]: model2 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2)
In [5]: print(all(model1['first']==model2['first']))
False
In [6]: model3 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2, seed = 1234)
In [7]: model4 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2, seed = 1234)
In [11]: print(all(model3['first']==model4['first']))
True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.