我有一個(大)神經網絡正在R中的nnet包訓練。我想能夠模擬這個神經網絡的預測,並且在並行使用像foreach這樣的東西,我之前用過的成功(全部在Windows機器上)。當預測與foreach並行的nnet輸出時發生R內存爆炸
我的代碼的基本形式
library(nnet)
data = data.frame(out=c(0, 0.1, 0.4, 0.6),
in1=c(1, 2, 3, 4),
in2=c(10, 4, 2, 6))
net = nnet(out ~ in1 + in2, data=data, size=5)
library(doParallel)
registerDoParallel(cores=detectCores()-2)
results = foreach(test=1:10, .combine=rbind, .packages=c("nnet")) %dopar% {
result = predict(net, newdata = data.frame(in1=test, in2=5))
return(result)
}
除了具有大得多的NN是配合和從預測;大約300MB。
上面的代碼在使用傳統的for循環或者使用%do%時運行良好,但是當使用%dopar%時,每個核心都被加載到內存中 - 每個核心使用700MB左右。如果我運行足夠長的時間,所有事情最終都會爆炸。
看了類似的問題,我仍然不知道是什麼原因造成的。省略「預測」部分使每件事情都順利進行。
我怎樣才能讓每個核心查找不變的'淨'而不是將它加載到內存中?還是不可能?