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

keras_model_sequential构建模型编译失败,模型类不符求解决方案

Keras R版编译模型时出现UseMethod("compile")错误

问题详情

学习《Deep Learning with R》时,已完成Keras和TensorFlow的安装,安装代码如下:

# install.packages("remotes") 
# remotes::install_github("rstudio/reticulate", force = TRUE) 
# remotes::install_github(sprintf("rstudio/%s", c("tensorflow", "keras"))) 
# reticulate::miniconda_uninstall() # start with a blank slate
# reticulate::install_miniconda() 
# #keras::install_keras() 
# #keras::install_keras(method = "conda", conda = "auto") 
# library(keras) 
# tensorflow::install_tensorflow(conda = "auto", envname = "r-reticulate", version = "release") 
# reticulate::use_condaenv(condaenv = "r-reticulate", conda = "auto", required = TRUE)

可正常导入MNIST数据集:

mnist <- keras::dataset_mnist()

使用keras_model_sequential构建模型:

model1 <-
  keras_model_sequential(list(
    layer_dense(
      units = 512,
      input_shape = c(28, 28),
      activation = "relu",
      name = "layer1"
    ),
    layer_dense(
      units = 10,
      activation = "softmax",
      name = "output"
    )
  ))

但编译模型时出现错误:

model1 %>% keras::compile(optimizer = "rmsprop",
                          loss = "sparse_categorical_crossentropy",
                          metrics = "accuracy")

Error: UseMethod("compile")出错:无法将'compile'方法应用于类为"c('keras.models.sequential.Sequential', 'keras.models.model.Model', 'keras.backend.tensorflow.trainer.TensorFlowTrainer', 'keras.trainers.trainer.Trainer', 'keras.layers.layer.Layer', 'keras.backend.tensorflow.layer.TFLayer', 'keras.backend.tensorflow.trackable.KerasAutoTrackable', 'tensorflow.python.trackable.autotrackable.AutoTrackable', 'tensorflow.python.trackable.base.Trackable', 'keras.ops.operation.Operation', 'python.builtin.object')"的对象

查看模型类,发现与书籍文档预期的keras.engine.training.Model不同:

[1] "keras.models.sequential.Sequential" 
[2] "keras.models.model.Model" 
[3] "keras.backend.tensorflow.trainer.TensorFlowTrainer" 
[4] "keras.trainers.trainer.Trainer" 
[5] "keras.layers.layer.Layer" 
[6] "keras.backend.tensorflow.layer.TFLayer" 
[7] "keras.backend.tensorflow.trackable.KerasAutoTrackable" 
[8] "tensorflow.python.trackable.autotrackable.AutoTrackable" 
[9] "tensorflow.python.trackable.base.Trackable" 
[10] "keras.ops.operation.Operation" 
[11] "python.builtin.object"

解决方法

1. 适配Keras 3.x API(当前安装版本)

你安装的是Keras 3.x版本,该版本采用了与Python原生Keras对齐的API,编译模型需使用R调用Python对象的语法,而非旧版的keras::compile()函数:

model1$compile(
  optimizer = "rmsprop",
  loss = "sparse_categorical_crossentropy",
  metrics = "accuracy"
)

2. 安装旧版Keras以匹配书籍内容

如果需要完全对应《Deep Learning with R》中的代码,可安装与书籍匹配的Keras 2.x版本:

# 卸载当前包
remove.packages(c("keras", "tensorflow"))
# 安装指定版本
remotes::install_github("rstudio/keras@v2.15.0")
remotes::install_github("rstudio/tensorflow@v2.15.0")
# 安装对应版本的TensorFlow后端
library(keras)
install_keras(version = "2.15.0")

3. 额外排查步骤

  • 执行reticulate::conda_list()确认r-reticulate环境存在且被正确激活
  • 重启R会话后重新加载包并执行代码,避免缓存导致的版本冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:04:59