分配给 foreach 和 doParallel 中的公共变量
Assign to common variable inside foreach and doParallel
我正在使用 doParallel
和 foreach
包来训练我拥有的数据集的 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
我正在使用 doParallel
和 foreach
包来训练我拥有的数据集的 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