R 神经网络包对于数百万条记录来说太慢

标签 r parallel-processing neural-network

我正在尝试使用 R 包神经网络训练用于流失预测的神经网络。这是代码:

data <- read.csv('C:/PredictChurn.csv') 
maxs <- apply(data, 2, max) 
mins <- apply(data, 2, min)
scaled_temp <- as.data.frame(scale(data, center = mins, scale = maxs - mins))
scaled <- data
scaled[, -c(1)] <- scaled_temp[, -c(1)]
index <- sample(1:nrow(data),round(0.75*nrow(data)))
train_ <- scaled[index,]
test_ <- scaled[-index,]
library(neuralnet)
n <- names(train_[, -c(1)])
f <- as.formula(paste("CHURNED_F ~", paste(n[!n %in% "CHURNED_F"], collapse = " + ")))
nn <- neuralnet(f,data=train_,hidden=c(5),linear.output=F)

它按其应有的方式工作,但是当使用完整数据集(数百万行的范围内)进行训练时,它花费的时间太长。所以我知道 R 默认情况下是单线程的,所以我尝试研究如何将工作并行化到所有核心。是否有可能并行执行此功能?我尝试了各种软件包但没有成功。

有人能做到吗? 它不一定是神经网络包,任何可以让我训练神经网络的解决方案都可以。

谢谢

最佳答案

我对这个包有很好的体验Rmpi ,它可能也适用于您的情况。

library(Rmpi)

简单来说,其用法如下:

nproc = 4  # could be automatically determined
# Specify one master and nproc-1 slaves
Rmpi:: mpi.spawn.Rslaves(nslaves=nproc-1)
# Execute function "func_to_be_parallelized" on multiple CPUs; pass two variables to function
my_fast_results = Rmpi::mpi.parLapply(var1_passed_to_func,
                                      func_to_be_parallelized,
                                      var2_passed_to_func)
# Close slaves
Rmpi::mpi.close.Rslaves(dellog=T)

关于R 神经网络包对于数百万条记录来说太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861114/

相关文章:

linux - 如何通过为每个 Linux 内核启动一个任务来(简单地)与 Linux shell 并行化?

c++ - 如何正确使用 OpenMP 中的 update() 子句

python - 在组合网络的子网上使用两种损失

computer-vision - Caffe LENET 或 Imagenet 模型中的参数数量

machine-learning - 尝试自己在MATLAB中模拟一个神经网络

r - 使用数字和整数列格式化 Markdown 表

多个操作系统上的 RMarkdown utf-8 错误

java - 如何使用C和Fortran语言使用Renjin Maven插件

r - 从另一个数据集中填充多列缺失数据

python - 从 python 脚本但在 python 脚本之外运行 python 脚本