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
似乎不允许添加第二个(或更多)隐藏层.
我通过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)