在R中运行LDA主题模型时如何使用8核

在R中运行LDA主题模型时如何使用8核,r,multicore,lda,R,Multicore,Lda,我使用以下代码在R中运行一个潜在的Dirichlet主题模型: for(k in 2:30) { ldaOut <-LDA(dtm,k, method="Gibbs", control=list(nstart=nstart, seed = seed, best=best, burnin = burnin, iter = iter, thin=thin)) assign(past

我使用以下代码在R中运行一个潜在的Dirichlet主题模型:

for(k in 2:30) {
    ldaOut <-LDA(dtm,k, method="Gibbs", 
                 control=list(nstart=nstart, seed = seed, best=best, 
                              burnin = burnin, iter = iter, thin=thin))
    assign(paste("ldaOut", k, sep = "_"), ldaOut)
}
library(doParallel)

    n.cores <- detectCores(all.tests = T, logical = T) 
    cl <- makePSOCKcluster(n.cores) 

doParallel::registerDoParallel(cl)

burnin <- 4000 
iter <- 2000
thin <- 500 
seed <-list(2003,10,100,10005,765)
nstart <- 5 
best <- TRUE 

var.shared <- c("ldaOut", "dtm", "nstart", "seed", "best", "burnin", "iter", "thin", "n.cores")
library.shared <- "topicmodels" # Same for library or functions.


ldaOut <- c()

    foreach (k = 2:(30 / n.cores - 1), .export = var.shared, .packages = library.shared) %dopar% {
        ret <- LDA(dtm, k*n.cores , method="Gibbs", 
                   control=list(nstart=nstart, seed = seed, best=best, 
                                burnin = burnin, iter = iter, thin=thin))
        assign(paste("ldaOut", k*n.cores, sep = "_"), ret)
    }
for(2:30中的k){

ldaOut您可以使用库doParallel

library(doParallel)
要获取计算机的内核数,请执行以下操作:

n.cores <- detectCores(all.tests = T, logical = T) 

n.cores您可以使用库doParallel

library(doParallel)
要获取计算机的内核数,请执行以下操作:

n.cores <- detectCores(all.tests = T, logical = T) 

n.cores我认为lda很难并行进行,因为每次扫描都使用上一次扫描的结果

所以为了加快速度,你可以

- reduce your dtm
- use faster libraries e.g. vowpal wabbit 
- use faster hardware e.g. aws

如果您针对alpha、eta、burnin等“超参数”进行优化,您可以在每个核心上使用不同的超参数运行完整的lda。

我认为lda很难并行执行,因为每次扫描都使用上一次扫描的结果

所以为了加快速度,你可以

- reduce your dtm
- use faster libraries e.g. vowpal wabbit 
- use faster hardware e.g. aws

如果您针对“超参数”进行优化像alpha、eta、burnin等,您可以在每个核心上使用不同的超参数运行完整的lda。

您尝试过主题模型的text2vec包吗?它更快。请参阅下面的链接:您尝试过主题模型的text2vec包吗?它更快。请参阅下面的链接:谢谢!我尝试过此代码,但得到的错误是shown。似乎循环找不到LDA函数。我做错了什么吗?您在library.shared中指定了LDA函数的库了吗?好的,我想我没有指定,t,所以现在我从“LDA”改为“如果包名是LDA然后是library.shared gc”,包名是“topicmodels”,所以我做了以下操作”library.shared谢谢!我尝试了此代码,但出现了如上所示的错误。循环似乎找不到LDA函数。我是否做错了什么?您是否在library.shared中指定了LDA函数的库?好的,我想我没有,t,所以现在我从LDA如果包名是LDA然后是library.shared,那么包名是“topicmodels”,因此我执行了以下“library.shared”
- reduce your dtm
- use faster libraries e.g. vowpal wabbit 
- use faster hardware e.g. aws