我们可以通过利用 foreach 包、nnet 和 caret 包使用多核并行训练神经网络模型吗?
我只看到并行的随机森林实现。神经网络可以吗?
我对插入符号的 train 函数特别感兴趣,它可以对最佳隐藏层和衰减大小进行网格搜索。这需要很长时间才能在单核上运行。
任何帮助表示赞赏。
我们可以通过利用 foreach 包、nnet 和 caret 包使用多核并行训练神经网络模型吗?
我只看到并行的随机森林实现。神经网络可以吗?
我对插入符号的 train 函数特别感兴趣,它可以对最佳隐藏层和衰减大小进行网格搜索。这需要很长时间才能在单核上运行。
任何帮助表示赞赏。
是否希望并行实施算法或重采样?如果您正在寻找后者,您只需注册您想要使用的核心数量,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核运行截图:
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)