Ubuntu环境下R中Keras模型compile方法调用报错求助
Keras模型compile方法调用报错排查
环境配置
tf_config() # 输出: TensorFlow v2.16.1 (~/miniconda3/lib/python3.12/site-packages/tensorflow) Python v3.12 (~/miniconda3/bin/python3.12)
出错代码
model %>% compile(optimizer = "rmsprop", loss = "mse", metrics = "mae")
错误信息
Error in UseMethod("compile") : método não aplicável para 'compile' aplicado a um objeto de classe "c('keras.src.models.functional.Functional', 'keras.models.functional.Functional', 'keras.src.ops.function.Function', 'keras.ops.function.Function', 'keras.src.models.model.Model', 'keras.models.model.Model', 'keras.src.backend.tensorflow.trainer.TensorFlowTrainer', 'keras.backend.tensorflow.trainer.TensorFlowTrainer', 'keras.src.trainers.trainer.Trainer', 'keras.trainers.trainer.Trainer', 'keras.src.layers.layer.Layer', 'keras.layers.layer.Layer', 'keras.src.backend.tensorflow.layer.TFLayer', 'keras.backend.tensorflow.layer.TFLayer', 'keras.src.backend.tensorflow.trackable.KerasAutoTrackable', 'keras.backend.tensorflow.trackable.KerasAutoTrackable', 'tensorflow.python.trackable.autotrackable.AutoTrackable', 'tensorflow.python.trackable.base.Trackable', 'keras.src.ops.operation.Operation', 'keras.ops.operation.Operation', 'keras.src.saving.keras_saveable.KerasSaveable', 'keras.saving.keras_saveable.KerasSavea
原因
当前环境使用的是Keras 3.x(随TensorFlow 2.16+捆绑),而《Deep Learning with R(第二版)》基于旧版Keras 2.x编写。两者API存在兼容性差异:Keras 3.x不再支持通过%>%管道符调用compile方法,旧语法触发了泛型方法匹配错误。
解决方案
方案1:适配Keras 3.x语法
直接调用compile函数,或使用R原生管道|>替代%>%:
# 方式1:直接调用 compile(model, optimizer = "rmsprop", loss = "mse", metrics = "mae") # 方式2:使用R原生管道 model |> compile(optimizer = "rmsprop", loss = "mse", metrics = "mae")
方案2:降级到教材兼容版本
如果希望完全匹配教材语法,将Keras和TensorFlow降级到2.15.x版本:
- 卸载当前Keras包:
remove.packages("keras")
- 安装指定版本并配置:
install.packages("keras", version = "2.15.0") keras::install_keras(tensorflow = "2.15.0")
- 重启R会话后验证版本:
tf_config()
确认输出中TensorFlow版本为2.15.x即可。
内容的提问来源于stack exchange,提问作者Violet Ishak
相关产品推荐
相关产品推荐

