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

R语言Keras多输入模型predict_prob调用失败求助

嘿,我碰到过不少多输入Keras模型预测踩坑的情况,结合你给出的代码片段,咱们来排查下predict_prob报错的常见原因和解决办法:

1. 输入数据的结构不匹配模型定义

多输入模型的预测需要严格对应每个输入的名称和维度,不能像单输入模型那样直接传一个数据框。你定义了两个输入:categorical_input(维度3116)和main_input(维度26),调用predict_prob时必须传入一个命名列表,每个键对应输入层的名字,值对应对应维度的数据:

# 示例:假设你的两类输入数据分别是cat_data和main_data
prob_predictions <- your_model %>% predict_prob(list(
  categorical_input = cat_data,
  main_input = main_data
))

很多人会不小心把两类数据合并成一个数据框传入,这会让模型找不到对应输入,直接报错。

2. 预测数据的类型和输入层定义不匹配

看你的代码,categorical_input指定了dtype = "float32",main_input是dtype = 'int32'。如果预测时传入的数据类型不匹配(比如main_input的预测数据变成了浮点型),就会触发类型错误。可以用typeof()检查数据类型,必要时转换:

# 确保main_input的数据是int32类型
main_data <- as.integer(main_data)
# 确保categorical_input是浮点型
cat_data <- as.numeric(cat_data)

3. 输出层的设置不符合概率输出要求

既然是生成类别概率,你的输出层应该是用softmax激活函数的全连接层,比如:

output_layer <- concatenate(list(categorical_layer, main_processed_layer)) %>%
  layer_dense(units = 你的类别总数, activation = "softmax")

如果输出层用了其他激活函数(比如sigmoid但类别数大于2),或者units设置不对,predict_prob就无法正确解析概率输出,要么报错要么结果异常。

4. 模型保存/加载后的输入名称不一致

如果是训练完保存模型,再加载后预测,有时候多输入模型的输入名称会出现偏差。可以先查看当前模型的输入名称:

print(your_model$input_names)

确保你传入预测列表的键和输出的名称完全一致(大小写、拼写都不能错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:38