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

R中使用keras_model_sequential报错ValueError的解决方法咨询

R中Keras Sequential模型构建时的ValueError解决办法

问题场景

在R中使用keras_model_sequential构建模型,定义过程正常,但添加layer_activation时触发错误:

复现代码

library(tidyverse)
library(keras)

model <- keras_model_sequential(input_shape = c(8)) 
model %>% 
  layer_dense(units = 32) %>% 
  layer_activation('softmax') 

错误信息

Error in py_call_impl(callable, call_args$unnamed, call_args$named) : 
  ValueError: Only input tensors may be passed as positional arguments. The following argument value should be passed as a keyword argument: <Sequential name=sequential_5, built=False> (of type <class 'keras.src.models.sequential.Sequential'>)
Run `reticulate::py_last_error()` for details.

回溯信息:

── R Traceback ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    ▆
 1. ├─model %>% layer_dense(units = 32) %>% ...
 2. ├─keras::layer_activation(., "softmax")
 3. │ └─keras::create_layer(...)
 4. └─keras::layer_dense(., units = 32)
 5.   └─keras::create_layer(...)
 6.     ├─keras:::compose_layer(object, layer)
 7.     └─keras:::compose_layer.default(object, layer)
 8.       └─reticulate (local) layer(object, ...)
 9.         └─reticulate:::py_call_impl(callable, call_args$unnamed, call_args$named)
See `reticulate::py_last_error()$r_trace$full_call` for more details.

环境:R 4.4.1、Keras 2.15.0、RStudio 2024.09.0


解决方法

方案1:在全连接层中直接指定激活函数

这是最推荐的写法,无需单独调用layer_activation,符合Keras的设计规范:

library(tidyverse)
library(keras)

model <- keras_model_sequential(input_shape = c(8)) 
model %>% 
  layer_dense(units = 32, activation = 'softmax')

方案2:修正layer_activation的调用参数

如果必须单独使用激活层,需要将激活函数名称通过activation关键字参数传递,不能用位置参数:

library(tidyverse)
library(keras)

model <- keras_model_sequential(input_shape = c(8)) 
model %>% 
  layer_dense(units = 32) %>% 
  layer_activation(activation = 'softmax') 

错误原因

Keras 2.15.0的R接口对layer_activation的参数规则做了调整:位置参数仅接受输入张量(即管道传递的模型对象),而激活函数类型必须通过activation关键字参数指定。原代码中将'softmax'作为位置参数传入,导致与管道传递的Sequential模型对象冲突,触发了ValueError。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:56:18