gensim doc2vec 给出不确定的结果
gensim doc2vec give non-determined result
我在 gensim python 库中使用 Doc2Vec 模型。
每次我给模型输入相同的句子数据并设置Doc2Vec的parameter:seed为一个固定的数字,模型建立后给出不同的向量。
出于测试目的,我每次给出未更改的输入数据时都需要一个确定的结果。我搜索了很多,但没有找到保持 gensim 结果不变的方法。
是不是我的使用方式有问题?感谢您提前回复。
这是我的代码:
from gensim.models.doc2vec import Doc2Vec
model = Doc2Vec(sentences, dm=1, dm_concat=1, size=100, window=5, hs=0, min_count=10, seed=64)
result = model.docvecs
Doc2Vec
算法在初始化和训练中都利用了随机性,高效的多线程训练引入了更多的随机性,因为跨多个线程的批次不一定会以相同的顺序进行训练运行-到-运行。
如果模型训练良好,从 运行 到 运行 的结果抖动应该不会很大,下游评估的质量应该不会有太大差异。如果结果质量确实变化很大,则可能存在将算法应用于您的数据或训练的其他问题。
另外:您几乎肯定不想使用非默认 dm_concat=1
模式。它会产生一个更大、训练速度更慢的模型,并且没有任何明确的 public 例子表明它值得额外的成本。 (只有当我从更简单的模式、大量的数据和时间中获得强大的基线结果时,我才会尝试它。)
我在 gensim python 库中使用 Doc2Vec 模型。
每次我给模型输入相同的句子数据并设置Doc2Vec的parameter:seed为一个固定的数字,模型建立后给出不同的向量。
出于测试目的,我每次给出未更改的输入数据时都需要一个确定的结果。我搜索了很多,但没有找到保持 gensim 结果不变的方法。
是不是我的使用方式有问题?感谢您提前回复。
这是我的代码:
from gensim.models.doc2vec import Doc2Vec
model = Doc2Vec(sentences, dm=1, dm_concat=1, size=100, window=5, hs=0, min_count=10, seed=64)
result = model.docvecs
Doc2Vec
算法在初始化和训练中都利用了随机性,高效的多线程训练引入了更多的随机性,因为跨多个线程的批次不一定会以相同的顺序进行训练运行-到-运行。
如果模型训练良好,从 运行 到 运行 的结果抖动应该不会很大,下游评估的质量应该不会有太大差异。如果结果质量确实变化很大,则可能存在将算法应用于您的数据或训练的其他问题。
另外:您几乎肯定不想使用非默认 dm_concat=1
模式。它会产生一个更大、训练速度更慢的模型,并且没有任何明确的 public 例子表明它值得额外的成本。 (只有当我从更简单的模式、大量的数据和时间中获得强大的基线结果时,我才会尝试它。)