使用插入符号错误消息进行doParallel计算

时间:2019-02-17 15:54:30

标签: r multiprocessing r-caret doparallel

我一直在尝试使用library(doParallel)实现多核处理,但是不知何故出现了一个错误。我怀疑这是从doParallel软件包生成的错误。下面是我的代码(我跳过了数据处理部分以使代码简单):

library(caret)
library(doParallel)
cores=detectCores()
cl <- makeCluster(cores[1]-2)
registerDoParallel(cl)


ctrl<-trainControl(method='cv',number=5, classProbs = T, 
               summaryFunction = twoClassSummary, allowParallel = T)

#############
#XGBoost Tree
#############
xgb_grid<-expand.grid(
  nrounds = 500,
  max_depth = 5,
  eta = c(0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12),
  gamma = 0.3,
  colsample_bytree = 0.25,
  min_child_weight = 2,
  subsample = 0.5
)

xgb <- caret::train(y ~ .,                 
             data = train,        
             method = "xgbTree",    
             trControl = ctrl,      
             tuneGrid = xgb_grid,   
             metric = "ROC",        
             verbose = TRUE)
stopCluster(c1)

我得到以下错误:

Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
  worker initialization failed: package or namespace load failed for ‘caret’ 
in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = 
vI[[j]]):
 there is no package called ‘generics’

我不确定是什么原因。似乎doParallel运行插入符号时出现问题?我确实知道,在trainControl下,allowParallel函数可以允许模型在需要时使用多核,但不是所有模型都可以。这就是为什么我要强迫插入符号使用多核来训练模型。

0 个答案:

没有答案