我在使用 caret 包和 RSNNS 包中的“mlpWeightDecay”方法指定学习率时遇到问题。“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 学习率。
我知道我可以通过“...”参数使用来自 RSNNS 的 mlpWeightDecay 方法的更多参数。“learnFuncParams”将是我需要插入的 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)
)
但是插入符号训练函数的文档告诉我“...”参数:
传递给分类或回归例程(例如randomForest)的参数。如果在此处传递调整参数的值,则会发生错误。
问题是 4 个“learningFuncParams”参数之一(权重衰减)是一个调整参数。
因此,我收到错误和警告:
train.default(TrainData, TrainClasses, method = "mlpWeightDecay", : 无法确定最终调优参数另外:有50个或更多警告(使用warnings()查看前50个)
警告信息:
1:在 method$fit(x = if (!is.data.frame(x)) as.data.frame(x) else x, ... :在您传递的“learnFuncParams”参数中覆盖权重衰减值in. 保留其他值
2:在 eval(expr,envir,enclos)中:Fold01 的模型拟合失败:size=4,decay=0e+00 mlp.default 中的错误(x = structure(list(Sepal.Length = c(-0.891390168709482,:正式由多个实际参数匹配的参数“learnFuncParams”
如果两者都设置在相同的参数“learningFuncParams”中,如何设置学习率而不与调整参数“decay”发生冲突?
谢谢!