You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中Caret调用Keras模型遇参数弃用问题求解

问题解决:Caret与Keras/TensorFlow版本兼容问题

核心原因

你遇到的错误是因为新版TensorFlow/Keras(2.10及以上)对优化器参数做了改动:lr被重命名为learning_rate,decay参数被直接移除,但Caret的mlpKerasDecay(你代码里用的是这个,不是你说的mlpKerasDropout)接口尚未适配这些变化,导致参数不匹配报错。即使你手动修改参数名或移除decay,Caret的内部逻辑还是会按旧参数名传递,所以依然报错。

是否需要降级?

是的,目前最直接有效的解决方法就是降级Keras和TensorFlow到与当前Caret版本兼容的旧版本(比如TensorFlow 2.9.0 + Keras 2.9.0,这个版本仍支持旧的优化器参数格式)。

R中降级步骤

  1. 卸载当前包
    运行以下代码卸载已安装的keras和tensorflow包:
remove.packages(c("keras", "tensorflow"))
  1. 重启R会话
    必须完全关闭并重新打开R/RStudio,确保旧版本的包不会残存在内存中。
  2. 安装指定版本的R包
    安装兼容版本的keras和tensorflow:
install.packages("keras", version = "2.9.0")
install.packages("tensorflow", version = "2.9.0")
  1. 安装对应版本的Python依赖
    加载keras包,安装匹配版本的Python版TensorFlow和Keras:
library(keras)
install_keras(tensorflow = "2.9.0")

如果你的系统中有多个Python环境,先通过reticulate::use_python("/path/to/your/python")指定目标环境,再执行install_keras。

额外代码修正

你的代码里有两处小错误,建议修正后再运行:

  • trainControl中的selectionFunctio拼写错误,应为selectionFunction
  • 如果你确实想用mlpKerasDropout模型,需把train中的method参数改为mlpKerasDropout,同时调整tuneGrid的参数(mlpKerasDropout的调参网格包含dropout参数,而非lambda)

内容的提问来源于stack exchange,提问作者Melland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:05:28