You need to enable JavaScript to run this app. 如何使用自定义训练的Keras模型进行预测,解决输入维度不兼容问题
优惠活动
大模型
产品
解决方案
定价
更多

如何使用自定义训练的Keras模型进行预测,解决输入维度不兼容问题

错误根因与修复方案

1. 预测输入维度不匹配

你调用predict时传入的pd.DataFrame([1, 3, 0, 3, 3, 1, 2, 3, 2])生成的是9行1列的二维表,而模型训练时接收的是每行9个特征的输入,要求最后一维长度为9,形状不匹配触发报错。
修复方法:
将预测输入改为1行9列的结构,同时保持列名和训练集特征列一致,避免pandas列顺序错乱导致特征错位:

# 正确写法1:套外层列表生成1行9列的DataFrame
result = model.predict(pd.DataFrame([[1, 3, 0, 3, 3, 1, 2, 3, 2]], columns=train.columns))

# 正确写法2:直接用numpy数组输入
result = model.predict(np.array([[1, 3, 0, 3, 3, 1, 2, 3, 2]]))

如果需要获取最终的预测类别编号,可对输出的logits取最大值对应的索引:

pred_class = np.argmax(result, axis=1)

2. 网络结构优化建议

你当前模型第一层用了输出维度为1的全连接层,会直接把9维特征压缩到1维,丢失大量原始特征信息,虽然当前数据集简单准确率达标,但结构不合理,可调整为:

model = tf.keras.Sequential([
    # 显式指定输入形状,避免隐式形状推断出错
    tf.keras.layers.Dense(64, activation='relu', input_shape=(9,)),
    tf.keras.layers.Dense(100, activation='relu'),
    tf.keras.layers.Dense(4)
])

调整后模型收敛速度和泛化能力都会有所提升。

内容的提问来源于stack exchange,提问作者pullidea-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:36:00