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

如何为聊天机器人神经网络设置输入形状,解决预测时维度不匹配报错

问题根因

你的模型输入层指定的单条样本特征维度为(46,),训练阶段输入的是形状为(26, 46)的批量数据(26条样本,每条46维特征)。预测阶段出现报错有两个可能原因:

  1. bag_of_words函数返回的单条样本特征长度不是46,维度不匹配
  2. 没有给单条样本补充批量维度,Keras的predict接口要求输入必须包含批量维度,哪怕只有一条样本,也需要封装为(1, 46)的形状
解决步骤
  • 第一步:先验证bag_of_words函数输出
    打印bag_of_words(inp, words)的形状,确认输出是长度为46的一维数组,如果长度不符,需要调整词袋生成逻辑,和训练时的特征提取规则保持一致。
  • 第二步:调整预测代码的输入格式
    把chat函数里的预测行:
    results = model.predict([bag_of_words(inp, words)])
    
    修改为以下任意一种即可:
    # 方法1:增加批量维度
    results = model.predict(numpy.expand_dims(bag_of_words(inp, words), axis=0))
    # 方法2:直接reshape为批量格式
    results = model.predict(bag_of_words(inp, words).reshape(1, -1))
    
额外优化建议

你的输出层用了softmax激活函数,属于多分类任务,训练时的损失函数binary_crossentropy是二分类/多标签分类用的,替换为categorical_crossentropy训练效果会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:54:03