caret :: train:为mlpWeightDecay指定进一步的非调整参数(RSNNS包)

时间:2014-04-29 13:32:06

标签: r machine-learning neural-network r-caret

我在使用插入符号包指定学习率时遇到问题" mlpWeightDecay"来自RSNNS包。 调整参数" mlpWeightDecay"是大小和衰变。

一个例子,将大小常数保持为4并将衰减调整为c(0,0.0001,0.001,0.002):

data(iris)
TrainData <- iris[,1:4]
TrainClasses <- iris[,5]

fit1 <- train(TrainData, TrainClasses,
            method = "mlpWeightDecay",
            preProcess = c("center", "scale"),
            tuneGrid=expand.grid(.size = 4, .decay = c(0,0.0001, 0.001, 0.002)),
            trControl = trainControl(method = "cv")
)

但我也想操纵模型的学习率,而不是仅仅采用0.2的默认学习率。

我知道我可以通过&#34; ...&#34;使用来自RSNNS的mlpWeightDecay方法的更多参数。参数。 &#34; learnFuncParams&#34;将是我需要插入的RSNNS参数。它需要4个参数(学习率,重量衰减,dmin,dmax)。

继续这个例子看起来像这样:

fit1 <- train(TrainData, TrainClasses,
    method = "mlpWeightDecay",
    preProcess = c("center", "scale"),
    tuneGrid=expand.grid(.size = 4, .decay = c(0,0.0001, 0.001, 0.002)),
    trControl = trainControl(method = "cv"),
    learnFuncParams=c(0.4,0,0,0)
)

但是插入符号列车功能的文档告诉我&#34; ...&#34;参数:
传递给分类或回归例程的参数(例如randomForest)。如果在此处传递调整参数的值,则会发生错误。

问题在于4&#34; learningFuncParams&#34;参数(权重衰减)是一个调整参数。

因此我收到错误和警告:

train.default中的错误(TrainData,TrainClasses,method =&#34; mlpWeightDecay&#34;,:   无法确定最终调整参数 另外:有50个或更多警告(使用警告()查看前50个

警告讯息:

1:方法$ fit(x = if(!is.data.frame(x))as.data.frame(x)else x,...:   在“学习功能”中超越重量衰减值&#39;您传入的参数。其他值保留

2:在eval(expr,envir,enclos)中:   模型拟合对于Fold01失败:size = 4,decay = 0e + 00 mlp.default中的错误(x =结构(列表(Sepal.Length = c(-0.891390168709482 ,:   正式论证&#34; learnFuncParams&#34;由多个实际参数匹配

如何在不与调整参数冲突的情况下设置学习速率&#34;衰减&#34;如果两者都设置在相同的参数&#34; learningFuncParams&#34;?

谢谢!

1 个答案:

答案 0 :(得分:1)

看起来你可以在&#34; ...&#34;中指定你自己的learnFuncParams。插入符号检查您是否提供了自己的一组参数,并且只会覆盖learnFuncParams [3](这是衰减)。它将采用您提供的learnFuncParams [1,2,4]。

找出插入符号的非常方便的方法是键入getModelInfo(&#34; mlpWeightDecay&#34;),然后向上滚动到$ mlpWeightDecay $ fit部分。它显示了插入符号将如何调用真正的训练功能:

$mlpWeightDecay$fit
    if (any(names(theDots) == "learnFuncParams")) {
        prms <- theDots$learnFuncParams
        prms[3] <- param$decay
        warning("Over-riding weight decay value in the 'learnFuncParams' argument you passed in. Other values are retained")
    }

它会检查您是否提供了自己的learnFuncParams。如果你这样做,它会使用它,但插入自己的衰变。您可以忽略该警告。

我认为您所得到的错误(&#34;最终调整参数无法确定&#34;)有另一个原因。你尝试过较低的学习率吗?