【问题标题】:mlpKerasDropout in caret插入符号中的 mlpKerasDropout
【发布时间】:2018-10-09 08:53:42
【问题描述】:

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

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

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

非常感谢,

【问题讨论】:

  • 您能否提供一个带有内置数据集的mcve?另见this

标签: r keras r-caret


【解决方案1】:

对于每个重采样(由 trainControl() 驱动),它都在运行。这就是您在 10 个 epoch 中的 10 个连续循环时所看到的。每个循环都是适合的重新采样/折叠。您可以通过将 epochs 参数设置为 train 来更改超参数调整时使用的 epoch 数,该参数将通过点 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 后,您希望根据训练数据重新拟合模型。

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2018-11-11
    • 2015-04-11
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2011-10-05
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多