相关疑难解决方法(0)

使用%dopar%时如何打印

我有一个foreach使用循环%dopar%使用doSNOW作为后端.如何在每次迭代中打印循环?

我下面的代码是我目前使用的,但它不打印任何东西.

foreach(ntree=rep(25,2),.combine=combine,.packages='randomForest',
    .inorder=FALSE) %dopar% {
        print("RANDOM FOREST")
        randomForest(classForm,data=data,na.action=na.action,do.trace=do.trace,ntree=ntree,mtry=mtry)
    }   
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r

63
推荐指数
4
解决办法
3万
查看次数

调用序列化R函数时出错

我将以下包装入R:

library(foreach)
library(doParallel)
library(iterators)
Run Code Online (Sandbox Code Playgroud)

我将代码"并行化"了很长时间,但最近我在代码运行时遇到INTERMITTENT停止.错误是:

Error in serialize(data, node$con) : error writing to connection
Run Code Online (Sandbox Code Playgroud)

我有根据的猜测是,我使用下面的命令打开的连接可能已过期:

## Register Cluster
##
cores<-8
cl <- makeCluster(cores)
registerDoParallel(cl)
Run Code Online (Sandbox Code Playgroud)

查看makeCluster手册页,我发现默认情况下,连接仅在30天后到期!我可以设置选项(错误=恢复),以便在代码停止时动态检查连接是否打开,但我之前决定发布这个一般性问题.

重要:

1)错误实际上是间歇性的,有时我重新运行相同的代码并且没有错误.2)我在同一台多核机器(Intel/8内核)上运行所有内容.因此,它不是群集中的通信(网络)问题.3)我是笔记本电脑和台式机(64核心)上CPU和GPU并行化的重要用户.不幸的是,这是我第一次遇到这种类型的错误.

是否有人有相同类型的错误?

根据要求,我提供了sessionInfo():

> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] TTR_0.22-0       xts_0.9-3        doParallel_1.0.1 iterators_1.0.6  foreach_1.4.0    zoo_1.7-9        Revobase_6.2.0   RevoMods_6.2.0  

loaded via a namespace (and not …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r snow

29
推荐指数
2
解决办法
2万
查看次数

R 并行化错误反序列化(socklisk[[n]])

简而言之,我试图使用 Snow 和 adply 在日期上并行化我的整个脚本,但不断出现以下错误。

\n\n
Error in unserialize(socklist[[n]]) : error reading from connection\nIn addition: Warning messages:\n1: <anonymous>: ... may be used in an incorrect context: \xe2\x80\x98.fun(piece, ...)\xe2\x80\x99\n\n2: <anonymous>: ... may be used in an incorrect context: \xe2\x80\x98.fun(piece, ...)\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

我通过以下方式设置了并行化过程:

\n\n
Cores = detectCores(all.tests = FALSE, logical = TRUE)\ncl = makeCluster(Cores, type="SOCK")\nregisterDoSNOW(cl)\nclusterExport(cl, c("Var1","Var2","Var3","Var4"), envir = environment())\n\n\nexposureDaily <- adply(.data = dateSeries,.margins = 1,.fun = MainCalcFunction,\n                       .expand = TRUE, Var1, Var2, Var3, \n                       Var4,.parallel = TRUE)\n\nstopCluster(cl)\n
Run Code Online (Sandbox Code Playgroud)\n\n

哪里dateSeries可能看起来像

\n\n …

parallel-processing r

5
推荐指数
1
解决办法
5661
查看次数

在R中获得randomForest回归更快

我必须在R中使用randomforest进行回归.我的问题是我的数据框很大:我有12个变量和超过40万个条目.当我尝试 - 代码写在底部 - 为了获得randomForest回归,系统需要花费很多时间来处理数据:经过5,6小时的计算后,我不得不停止操作而没有任何输出.有人可以建议我如何更快地获得它?谢谢

library(caret)
library(randomForest)

dataset <- read.csv("/home/anonimo/Modelli/total_merge.csv", header=TRUE)
dati <- data.frame(dataset)
attach(dati)


trainSet <- dati[2:107570,]
testSet <- dati[107570:480343,]

output.forest <- randomForest(dati$Clip_pm25 ~ dati$e_1 + dati$Clipped_so + dati$Clip_no2 + dati$t2m_1 + dati$tp_1 + dati$Clipped_nh  +  dati$Clipped_co + dati$Clipped_o3 + dati$ssrd_1 + dati$Clipped_no + dati$Clip_pm10 + dati$sp_1, data=trainSet, ntree=250)
Run Code Online (Sandbox Code Playgroud)

regression r random-forest

4
推荐指数
2
解决办法
4521
查看次数