2017-05-30 34 views

回答

1

Gensim的Doc2Vec不适用于在多台机器上分发培训。这将是一个重要而复杂的项目,以适应其最初的批量培训。

您确定自己的数据集和目标需要此类分布吗?您可以在具有多个内核的单台机器上完成大量的工作,其中包括128GB + RAM。

请注意,您也可以在较小的代表性数据集上训练Doc2Vec模型,然后在冻结模型上使用其.infer_vector()方法计算任意数量附加文本的doc-vectors。这些冷冻模型可以在多台机器上运行 - 允许doc-vectors的任意分布计算。 (这比分配初始训练要容易得多。)

+0

怎么办?我知道我可以使用'.infer_vector',并且很可能我需要这样做,因为我的数据非常大,每次使用新数据进入系统时都会训练doc2vec,这是不切实际的。问题是,我的数据来作为pyspark.sql.dataframe.DataFrame和允许推理我需要TaggedDocument格式使用.infer_vector()。当我使用'df.select(“text”)。rdd.flatMap(lambda r:r).collect()'这样一个大数据集时,我会陷入很长时间。我如何能够有效地做到这一点,以及如何允许任意分布的计算。 – Regina

+0

如上所述,gensim的Doc2Vec不适用于多机器或多进程培训 - 因此您可能希望退出Spark,将您将用于单进程培训的所有文档写入临时文件,在Spark外进行培训,然后让(经过冷冻的,只读的)训练好的模型可供Spark以后的步骤使用。 – gojomo

相关问题