【问题标题】:what does workers means in gensim Word2Vec?gensim Word2Vec中的工人是什么意思?
【发布时间】:2020-11-19 05:34:42
【问题描述】:

我正在尝试使用 gensim 创建 Word2Vec 模型,但我不明白 Workers 的意思。 这是来自 radimrehurek.com 的示例,workers = 4,但没有对此进行解释。

Word2Vec(sentences=common_texts, vector_size=100, window=5, min_count=1, workers=4)

我会非常感谢任何可以帮助我的人。Thxx

【问题讨论】:

标签: python nlp gensim word2vec


【解决方案1】:

这是在训练阶段将使用的 Python 工作线程数。

如果您使用传统的 iterable-of-texts(如您的 sentences 参数)来提供您的语料库,并且您在一台至少有 4 个 CPU 内核的机器上,您通常会获得最佳吞吐量workers 值至少为 3,也许高达 8-12(但绝不会高于 CPU 内核数减一)。

如果您的输入是纯文本文件,其中的标记已经用空格分隔,并且每个以换行符分隔的文本不超过 10000 个标记,您可以使用最近引入的 corpus_file 选项来指定语料库.在这种情况下,您可能会在 workers 等于可用 CPU 内核数的情况下实现最大训练吞吐量。

(你可以用import multiprocessing然后multiprocessing.cpu_count()得到核心数。)

【讨论】:

  • 非常感谢。这是一个完美的答案。
  • @gojomo 如果我在 gensim 中使用“PathLineSentences”从目录中流式传输文件会怎样。我所有的文件都符合 PathLineSentence 格式。但是,培训不是同时进行的。每次打开文件进行训练时,日志都会显示“in_qsize 0, out_qsize 0”并处理文件中的所有单词,从而使整个过程非常缓慢。
  • 通常使用 PathLineSentences 可迭代实现多线程训练没有问题,因为一个线程正在阅读,而 workers 计数其他线程正在处理文本。如果您认为您看到了,您应该发布一个单独的问题,其中包含您的情况的完整代码/输出/问题详细信息。 (in_qsize 0, out_qsize 0 不一定表示有任何问题 - 这意味着威胁都可以很好地跟上工作负载 - 但速度慢可能有很多原因。)
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2017-06-11
  • 2018-03-05
相关资源
最近更新 更多