分配给 foreach 和 doParallel 中的公共变量

Assign to common variable inside foreach and doParallel

我正在使用 doParallelforeach 包来训练我拥有的数据集的 400 个小型 Keras 模型。

#1. Pre-make a blank data frame to be filled with values in the loop
Summary<-data.frame(ticker=character(), Today=numeric(), Tommorow=numeric(), MAPE=numeric(), stringsAsFactors=FALSE)

#2. Initialize cores to work
registerDoParallel(detectCores()-1)

#3. Implement for loop with parallel
foreach (i=1:400, .combine=c, .packages = c("keras", "tensorflow","dplyr","data.table")) %dopar% {
          ... code that filters data dynamically on [i] and fits the NN model...
          Summary[i,]<-c(tickers[i],
                         as.numeric(Predict[length(Predict)]),
                         model%>%predict(PredictorsT)%>%as.numeric(),
                         MAPE)
}

并行过程运行但在循环结束时摘要数据框保持空白,这意味着每次迭代都无法填充数据。我该如何实现?

将结果放入 return 语句。

Summary = foreach (i=1:400, .combine=c, .packages = c("keras", "tensorflow","dplyr","data.table")) %dopar% {
          ... code that filters data dynamically on [i] and fits the NN model...
          return(c(tickers[i],
                   as.numeric(Predict[length(Predict)]),
                   model%>%predict(PredictorsT)%>%as.numeric(),
                   MAPE))

你的联合收割机可能应该是 .combine=rbind