【问题标题】:R caret nnet package in Multicore多核中的 R caret nnet 包
【发布时间】:2013-09-13 08:25:19
【问题描述】:

我们可以利用 foreach 包、nnet 和 caret 包使用多核并行训练神经网络模型吗?

我只看到并行的随机森林实现。神经网络可以吗?

我对插入符号的 train 函数特别感兴趣,它可以对最佳隐藏层和衰减大小进行网格搜索。这需要很长时间才能在单核上运行。

感谢任何帮助。

【问题讨论】:

    标签: r parallel-processing r-caret


    【解决方案1】:

    是否希望并行实施算法或重采样?如果您正在寻找后者,您只需通过registerDoMC() 注册您想要使用的核心数量,它就会并行运行这些核心。例如:

    > library(caret)
    > library(doMC)
    > 
    > registerDoMC(4)
    > tc <- trainControl(method="boot",number=25)
    > train(Species~.,data=iris,method="nnet",trControl=tc)
    # weights:  43
    initial  value 596.751921 
    iter  10 value 61.068365
    iter  20 value 16.320051
    iter  30 value 9.581306
    iter  40 value 8.639828
    iter  50 value 8.492001
    iter  60 value 8.364661
    iter  70 value 8.264618
    iter  80 value 8.082598
    iter  90 value 5.911050
    iter 100 value 1.179339
    final  value 1.179339 
    stopped after 100 iterations
    450 samples
      4 predictors
      3 classes: 'setosa', 'versicolor', 'virginica' 
    
    No pre-processing
    Resampling: Bootstrap (25 reps) 
    
    Summary of sample sizes: 450, 450, 450, 450, 450, 450, ... 
    
    Resampling results across tuning parameters:
    
      size  decay  Accuracy  Kappa  Accuracy SD  Kappa SD
      1     0      0.755     0.64   0.251        0.366   
      1     1e-04  0.834     0.758  0.275        0.401   
      1     0.1    0.964     0.946  0.0142       0.0214  
      3     0      0.961     0.941  0.0902       0.135   
      3     1e-04  0.972     0.958  0.0714       0.104   
      3     0.1    0.977     0.966  0.0108       0.0163  
      5     0      0.973     0.96   0.0579       0.0888  
      5     1e-04  0.987     0.98   0.00856      0.0129  
      5     0.1    0.978     0.966  0.0112       0.0168  
    
    Accuracy was used to select the optimal model using  the largest value.
    The final values used for the model were size = 5 and decay = 1e-04.
    

    4 个内核运行的屏幕截图:

    【讨论】:

    • 这是插入符号可以做的所有并行性,除非底层包这样做(而这个没有)。最大
    • 谢谢大卫,我正在寻找并行重采样。
    【解决方案2】:

    doMC 不支持 R 3.2。你可以使用 doParallel

    library(doParallel);
    cl <- makeCluster(detectCores())
    registerDoParallel(cl)
    tc <- trainControl(method="boot",number=25)
    train(Species~.,data=iris,method="nnet",trControl=tc)
    stopCluster(cl)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2014-04-15
      • 2013-09-18
      • 2013-10-19
      • 2014-05-25
      相关资源
      最近更新 更多