插入符号中列车的并行执行失败,未找到功能

 123123 发布于 2023-02-04 18:50

昨天我更新了我的R包,从那以后并列执行列车功能失败了.

似乎从工作者中调用的某些函数不可用.这些函数至少是flatTable和probFunction.

我在生产机器上遇到了这个问题,并且能够在干净的Windows 7 x64 VM上重现它.

我在下面添加了一个最小的工作示例 亲爱的stackoverflow用户:非常感谢!

# R 3.0.2 x64, RStudio Version 0.98.490, Windows 7 x64

data(iris)
library(caret) # 6.0-21
library(doParallel) # 1.0.6

model <- "rf"

# Fail
?probFunction
?flatTable

fitControl <- trainControl(
  method = "repeatedcv"
  , number = 5  ## 5-fold CV
  , repeats = 1   ## repeated one times
  , verboseIter =TRUE
)

#### Sequential Version ####

# Runs
train(Species ~ ., data = iris, method = model, trControl = fitControl)

#### Parallelized version ####

# Fails with 
# Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
#  worker initialization failed: Error in eval(expr, envir, enclos): could not find function "flatTable"
cl <- makeCluster(3)
registerDoParallel(cl)

train(Species ~ ., data = iris, method = model, trControl = fitControl)

stopCluster(cl)

# Fails with 
# Error in { : task 1 failed - "could not find function "probFunction""
fitControl <- trainControl(
  method = "repeatedcv"
  , number = 5  ## 5-fold CV
  , repeats = 1   ## repeated one times
  , verboseIter =TRUE
  , classProbs = TRUE
)

cl <- makeCluster(3)
registerDoParallel(cl)

train(Species ~ ., data = iris, method = model, trControl = fitControl)

stopCluster(cl)

#### Again sequential version ####

# Fails with
# Error in summary.connection(connection) : invalid connection
train(Species ~ ., data = iris, method = model, trControl = fitControl)

R会话信息

R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C                    LC_TIME=German_Germany.1252   

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

other attached packages:
[1] e1071_1.6-1        class_7.3-9        randomForest_4.6-7 doParallel_1.0.6   iterators_1.0.6  
[6] foreach_1.4.1      caret_6.0-21       ggplot2_0.9.3.1    lattice_0.20-23  

loaded via a namespace (and not attached):
[1] car_2.0-19         codetools_0.2-8    colorspace_1.2-4   compiler_3.0.2     dichromat_2.0-0  
 [6] digest_0.6.4       grid_3.0.2         gtable_0.1.2       labeling_0.2       MASS_7.3-29      
[11] munsell_0.4.2      nnet_7.3-7         plyr_1.8           proto_0.3-10       RColorBrewer_1.0-5
[16] reshape2_1.2.2     scales_0.2.3       stringr_0.6.2      tools_3.0.2      

Steve Weston.. 7

您使用doParallel,doSNOW和doMPI时出现的错误是由插入符号6.0-21中的错误引起的.它已在R-forge的6.0-22版中修复,但尚未发布到CRAN.如果您不想等待新版本发布,您可以:

    降级为插入5.x

    从R-forge安装插入符号6.0-22

    从R-forge而不是doParallel安装和使用doSNOW 1.0.10

问题是由于CRAN策略的更改导致禁止使用:::运算符,即使在同一个包中引用非导出函数时也是如此.


更新

Caret 6.0-22于2014-01-18发布于CRAN.这应该使用带有doSNOW和类似并行后端的插入符来解决报告的问题.

1 个回答
  • 您使用doParallel,doSNOW和doMPI时出现的错误是由插入符号6.0-21中的错误引起的.它已在R-forge的6.0-22版中修复,但尚未发布到CRAN.如果您不想等待新版本发布,您可以:

      降级为插入5.x

      从R-forge安装插入符号6.0-22

      从R-forge而不是doParallel安装和使用doSNOW 1.0.10

    问题是由于CRAN策略的更改导致禁止使用:::运算符,即使在同一个包中引用非导出函数时也是如此.


    更新

    Caret 6.0-22于2014-01-18发布于CRAN.这应该使用带有doSNOW和类似并行后端的插入符来解决报告的问题.

    2023-02-04 18:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有