r - 插入符号中的 mlpKerasDropout
问题描述
在使用 caret R 包进行训练时,我一直在尝试实现 mlpKerasDropout 方法。
我的代码似乎连续循环通过 10 个周期中的 10 个,并且似乎没有收敛。我研究过mlpKerasDropout.R,但很难理解这个函数是如何工作的。
有没有人有一个最小的例子,他们可以分享如何使用这个功能?
非常感谢,
解决方案
对于每个重采样(由 trainControl() 驱动),它都在运行。这就是您在 10 个 epoch 中的 10 个连续循环时看到的情况。每个循环都是适合的重新采样/折叠。您可以通过将 epochs 参数设置为 train 来更改超参数调整时使用的 epoch 数,该参数将通过点 args (...) 传递给训练方法“mlpKerasDropout”
在此处查看 mlpKerasDropout 的代码:https ://github.com/topepo/caret/blob/master/models/files/mlpKerasDropout.R
默认情况下,超参数的搜索参数设置为“网格”,但您可能希望将其设置为“随机”,以便它尝试除 relu 之外的不同激活函数,或提供您自己的调整网格。
这是一个代码示例,显示了使用 search='random' 的 tuneLength,并利用了提前停止以及传递给 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 后,您希望在训练数据上重新拟合模型。
推荐阅读
- python - 将风向字典映射到新列
- arrays - rails fields_for number_field 数组必须具有不同的值
- python - 计算有权访问文件夹 python 的用户数
- cmake - 将库从一个子模块延迟链接到另一个子模块
- django - 如何使用 Django 注释?
- javascript - JavaScript 中 PHP 变量的使用
- python - 我的“更改密码”功能不起作用,而是陷入循环
- flutter - 有人在 Flutter 中呼叫用户后,我可以发送用户通知吗?
- javascript - 如何检查一个值是否已经存在于 Javascript 中的文本字段中
- python - 从谷歌驱动器或本地存储的一个添加图像到谷歌幻灯片