CẬP NHẬT: caret hiện sử dụng foreach
nội bộ, vì vậy câu hỏi này không còn thực sự phù hợp. Nếu bạn có thể đăng ký một phụ trợ song song làm việc cho foreach
, caret sẽ sử dụng nó.
Tôi có gói caret cho R và tôi rất thú vị khi sử dụng train
chức năng để xác thực chéo các mô hình của mình. Tuy nhiên, tôi muốn tăng tốc mọi thứ và dường như caret cung cấp hỗ trợ cho xử lý song song. Cách tốt nhất để truy cập tính năng này trên máy Windows là gì? Tôi có gói doSMP , nhưng tôi không thể tìm ra cách dịch foreach
hàm thành lapply
hàm, vì vậy tôi có thể chuyển nó sang train
hàm.
Dưới đây là một ví dụ về những gì tôi muốn làm, từ train
tài liệu: Đây chính xác là những gì tôi muốn làm, nhưng sử dụng doSMP
gói, thay vì doMPI
gói.
## A function to emulate lapply in parallel
mpiCalcs <- function(X, FUN, ...)
}
theDots <- list(...)
parLapply(theDots$cl, X, FUN)
{
library(snow)
cl <- makeCluster(5, "MPI")
## 50 bootstrap models distributed across 5 workers
mpiControl <- trainControl(workers = 5,
number = 50,
computeFunction = mpiCalcs,
computeArgs = list(cl = cl))
set.seed(1)
usingMPI <- train(medv ~ .,
data = BostonHousing,
"glmboost",
trControl = mpiControl)
Đây là phiên bản của hàm mbq sử dụng cùng tên biến như tài liệu lapply:
felapply <- function(X, FUN, ...) {
foreach(i=X) %dopar% {
FUN(i, ...)
}
}
x <- felapply(seq(1,10), sqrt)
y <- lapply(seq(1,10), sqrt)
all.equal(x,y)