小编Tom*_*evi的帖子

有没有办法在插入符号包中使用mlp方法设置多隐藏层神经网络?

mlp包中的方法caret调用mlp函数RSNNS.在RSNNS包中,我可以通过设置size参数在神经网络中设置尽可能多的隐藏层,例如

data(iris)

#shuffle the vector
iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]

irisValues <- iris[,1:4]
irisTargets <- decodeClassLabels(iris[,5])
#irisTargets <- decodeClassLabels(iris[,5], valTrue=0.9, valFalse=0.1)

iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)
iris <- normTrainingAndTestSet(iris)

model <- mlp(iris$inputsTrain, iris$targetsTrain, size=c(5,7), learnFuncParams=c(0.1), 
             maxit=50, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)
Run Code Online (Sandbox Code Playgroud)

将建立一个神经网络,分别有5个和7个节点的两个隐藏层.我想使用该caret包,因为它具有进行参数/模型搜索的功能,以及集群的并行实现.在caret,当我查找方法时,它只能用一个参数进行调整size,例如

data(iris)

mlpGrid <- data.frame(.size=3)
model2<-caret::train(Species~. , iris, method='mlp', tuneGrid=mlpGrid)
Run Code Online (Sandbox Code Playgroud)

建立具有3节点单隐藏层的神经网络.

我已经尝试过添加其他列mlpGrid等等,但caret似乎不允许添加第二个(或更多)隐藏层.

r machine-learning prediction neural-network r-caret

11
推荐指数
1
解决办法
6050
查看次数

在群集上运行时在插入符中发生错误

我通过doRedis在集群train中的插入符号中运行该函数.在大多数情况下,它是有效的,但我经常在这种性质的最后得到错误:

error calling combine function:
<simpleError: obj$state$numResults <= obj$state$numValues is not TRUE>
Run Code Online (Sandbox Code Playgroud)

Error in names(resamples) <- gsub("^\\.", "", names(resamples)) : 
  attempt to set an attribute on NULL
Run Code Online (Sandbox Code Playgroud)

当我跑步时,traceback()我得到:

5: nominalTrainWorkflow(dat = trainData, info = trainInfo, method = method, 
       ppOpts = preProcess, ctrl = trControl, lev = classLevels, 
       ...)
4: train.default(x, y, weights = w, ...)
3: train(x, y, weights = w, ...)
2: train.formula(couple ~ ., training.balanced, method = "nnet", 
       preProcess …
Run Code Online (Sandbox Code Playgroud)

r machine-learning cluster-computing r-doredis r-caret

5
推荐指数
1
解决办法
868
查看次数