ParallellTopicModel - 线程选项显着改变结果

问题描述 投票:0回答:1

我目前正在使用ParallelTopicModel进行主题建模,但我遇到了一些奇怪的行为。当我为模型设置不同数量的线程时,我会得到不同的结果,如果我是对的,这不应该发生。我们编写的实现用于具有不同数量的最大线程的不同机器上,但不知何故结果是不同的。随机种子,文档,迭代等是相同的。

这是一个已知的bug还是预期的?或者我只是做错了什么?

代码片段:

    // Begin by importing documents from text to feature sequences
    final InstanceList instances = new InstanceList(docPipe);
    instances.addThruPipe(docsIter);
    final ParallelTopicModel model =
        new ParallelTopicModel(noOfTopics, m_alpha.getDoubleValue() * noOfTopics, m_beta.getDoubleValue());
    model.setRandomSeed(m_seed.getIntValue());
    model.addInstances(instances);
    model.setNumThreads(noOfThreads);
    model.setNumIterations(noOfIterations);
    try {
        model.estimate();
    } catch (RuntimeException e) {
        throw e;
    }
topic-modeling mallet
1个回答
1
投票

每个线程都有自己的随机数生成器。设置种子会将每个种子初始化为相同的序列,因此如果您拥有相同数量的线程,则应获得相同的结果。每个线程负责其自己的集合段。

如果您有不同数量的线程,则相同的随机数将应用于具有不同采样分布的不同令牌,因此将具有不同的采样结果。

保留单个随机数生成器会添加同步依赖性,并且除非线程完全同步,否则不会保证相同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.