我在使用插入符号包和 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:在方法 $fit(x = if (!is.data.frame(x)) as.data.frame(x) else x, ... 中:
覆盖您传入的“learnFuncParams”参数中的权重衰减值。保留其他值
2:在 eval(expr, envir, enclos) 中:
Fold01 的模型拟合失败:尺寸 = 4,衰减 = 0e+00 mlp.default 中的错误(x = 结构(列表(Sepal.Length = c(-0.891390168709482,:
形式参数“learnFuncParams”与多个实际参数匹配
如果在同一参数“learningFuncParams”中设置学习率,如何设置学习率而不与调整参数“decay”发生冲突?
Thanks!