插入符号中的mlpKerasDropout

问题描述 投票:1回答:1

在使用插入符R包进行训练时,我一直在尝试实现mlpKerasDropout方法。

我的代码似乎连续循环了10个时代中的10个,似乎并没有收敛。我研究过mlpKerasDropout.R,但我很难理解这个功能是如何工作的。

有没有人有一个最小的例子,他们可以分享如何使用这个功能?

非常感谢,

r keras r-caret
1个回答
0
投票

对于每次重新采样(由trainControl()驱动),它正在运行。这就是你所看到的十个10个时期中的10个连续循环。每个循环都是重新取样/折叠。您可以通过将epochs参数设置为train来更改超参数调整时使用的时期数,这将通过点args(...)传递给训练方法“mlpKerasDropout”

请在此处查看mlpKerasDropout的代码:https://github.com/topepo/caret/blob/master/models/files/mlpKerasDropout.R

默认情况下,超参数的搜索参数设置为“网格”,但您可能希望将其设置为“随机”,以便它尝试除relu之外的其他激活函数,或者提供自己的调整网格。

这是一个代码示例,显示了tuneLength与search ='random'的用法,并利用了早期停止以及传递给keras的epochs参数。

tune_model <- train(x, y, 
           method = "mlpKerasDropout",
           preProc = c('center', 'scale', 'spatialSign'),
           trControl = trainControl(search = 'random', classProbs = T, 
              summaryFunction = mnLogLoss, allowParallel = TRUE),
           metric = 'logLoss',
           tuneLength = 20, 
# keras arguments following
validation_split = 0.25,
           callbacks = list(
                keras::callback_early_stopping(monitor = "val_loss", mode = "auto", 
                  patience = 20, restore_best_weights = TRUE)
              ),
            epochs = 500)

请记住,在完成超参数调整CV后,您需要在训练数据上重新拟合模型。

© www.soinside.com 2019 - 2024. All rights reserved.