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

Keras神经网络模型predict()函数调用失败求助——红酒质量预测场景

解决Keras神经网络predict()函数报错问题

看起来你在把训练好的Keras模型应用到测试集时遇到了连续的报错,我来帮你一步步排查解决:

第一个错误:argument "x" is missing, with no default

这个问题很容易修正——在R的Keras包中,predict()函数的输入参数不是newdata(这是caret等工具包的参数命名),正确的参数名是x。不过你已经调整为predict(modnn, dataset_test),这个问题已经解决,接下来重点处理第二个核心错误。

第二个错误:ValueError: Missing data for input "dense_25_input"

这个报错背后有两个关键原因,我们逐个处理:

1. 测试集包含多余的特征列

你的模型输入层定义为input_shape=c(11),意味着只接受11个特征变量,但你的测试集里多了一列id_number,这直接导致输入维度不匹配。首先需要清理测试集,移除非特征列:

# 移除id_number列,保留模型需要的11个特征
dataset_test_clean <- dataset_test %>% select(-id_number)

2. Keras模型期望的输入格式是矩阵/数组,而非带列名的数据框

R中的数据框会保留列名信息,但Keras底层的TensorFlow引擎只接受纯数值的矩阵或数组输入,无法识别数据框的列名。所以需要把清洗后的测试集转换成矩阵格式:

# 将数据框转换为矩阵
dataset_test_matrix <- as.matrix(dataset_test_clean)

最后,重新执行预测

现在用处理好的矩阵调用predict函数即可:

predictions <- predict(modnn, x = dataset_test_matrix)

另外提个小细节:你的模型最后一层是layer_dense(units=1),但编译时用了loss="binary_crossentropy"——如果红酒质量是多分类任务(比如评分是3-9的整数),这个损失函数并不合适;如果是回归任务(预测连续的质量值),应该改用loss="mse"(均方误差)。不过你提到训练准确率达到99%,可能已经把任务转换成了二分类,这点可以根据你的实际需求再确认下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:42:30