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

Keras NLP分类模型predict函数问题:输入单句返回多预测数组

Keras NLP分类模型返回单token分类而非句子分类的解决方法

核心问题:输入维度不符合模型要求

你输入的np.array([1,2])是一维数组,Keras会把每个token当成独立的单token样本处理,因此输出对应每个样本(每个token)的分类结果。而句子分类模型要求输入为二维数组,形状是(样本数量, 序列长度)——第一个维度代表待预测的句子数量,第二个维度代表单句的token长度。

输入格式修正方案

给输入增加一个维度,明确表示这是1个包含2个token的句子样本:

toPredict = np.array([[1,2]])  # 形状变为(1, 2),对应1个样本、序列长度2

prediction = self.model.predict(toPredict)
print(prediction)

修正后输出会是(1, 4)形状的数组,对应整个句子的单一分类结果。

额外验证:模型结构是否正确

如果输入修正后仍未得到预期结果,需确认模型最后一层做了句子级特征聚合:

  • 不能直接在返回序列的循环层(比如LSTM(..., return_sequences=True))后接分类Dense层,否则会输出每个token的分类结果。
  • 必须添加全局池化层(如GlobalAveragePooling1D或GlobalMaxPooling1D),把序列特征聚合为句子级特征,再连接分类层。示例结构:
from keras.models import Sequential
from keras.layers import Embedding, LSTM, GlobalAveragePooling1D, Dense

model = Sequential()
model.add(Embedding(input_dim=你的词汇表大小, output_dim=128, input_length=你的最大序列长度))
model.add(LSTM(64, return_sequences=True))
model.add(GlobalAveragePooling1D())  # 聚合整个序列的特征
model.add(Dense(4, activation='softmax'))  # 输出句子的4分类结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:01:13