gensim训练出的Word2Vec模型每次都不一样

  统计/机器学习 自然语言处理 Python 人工神经网络    浏览次数:7053        分享
1

用gensim训练出来的word2vec模型,虽然设置了随机seed,但是每次得到的模型还是不一样。

有谁遇到过类似的问题吗?


代码如下


model1 =  gensim.models.word2vec.Word2Vec(text, size=50, seed=1, window=3, workers=4)
model2 =  gensim.models.word2vec.Word2Vec(text, size=50, seed=1, window=3, workers=4)
print model1.wv.most_similar(positive=['shanghai'])[:2]
print model2.wv.most_similar(positive=['shanghai'])[:2]

得到的结果是

[('beijing', 0.9490054249763489), ('seoul', 0.9238297343254089)]
[('beijing', 0.9414007663726807), ('taipei', 0.9180472493171692)]


 

剪叔   2017-10-29 13:01



   1个回答 
2

这个我知道,的确有点小奇葩。。。

你需要确保workers=1,两个模型有一样seed的模型才会完全一样。不然的话,会因为并行计算的问题,两个就又乱了。


SofaSofa数据科学社区DS面试题库 DS面经

数据痴汉   2017-10-30 11:08

谢谢,果然workers=1就可以了 - 剪叔   2017-10-30 22:29


  相关讨论

word2vec的网络里为什么没有bias偏置项

为什么基于skip-gram的word2vec在低频词汇相比cbow更有效?

gensim的word2vec模型是skip-gram还是cbow?

gensim里word2vec的window指的是什么?包括的范围是多大?

gensim.models.word2vec模块的LineSentence有什么用?

怎么把训练好的bin格式的word2vec模型导入到gensim中使用?

教程中的利用Word2Vec判断是否是白话

word2vec怎么处理一词多义的情况?

gensim word2vec中wmdistance是什么距离?

训练word2vec时移动窗口的大小怎么选择?

  随便看看

如何度量一个分布长尾的程度?

Random Forest可以用来做聚类?

怎么提取pandas dataframe中某一列每个字符串的前n个字符?

logloss的取值范围是多少?一般好的分类器能达到多少?

python sklearn模型中random_state参数的意义