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

5分类文本序列训练报错:目标数组形状(32,124403)与输出(None,5)不匹配

错误原因
  • 核心问题为传入模型的标签形状与模型输出形状不匹配:你搭建的5分类模型最终输出维度是(batch_size, 5),对应每个样本属于5个类别的概率;但报错显示你传入的标签形状为(32, 124403),二者维度完全不符。
  • 124403是你设置的词汇表大小num_unique_words,说明你错误地把文本输入的词序列当成了分类标签传入模型。
  • 你调用model.fit的参数逻辑存在问题:标准model.fit的前两个入参分别是输入特征x和对应标签y,你仅传入train_sequence作为第一个参数,要么是漏传了标签参数,要么是你构造的train_sequence数据集本身存在输入、标签顺序颠倒,或标签赋值错误的问题。
解决方案
  • 第一步:整理正确的分类标签:每个样本对应一个5维的one-hot编码(适配你当前使用的categorical_crossentropy损失),标签整体形状应为(总样本数, 5),单batch标签形状为(32, 5)。
  • 第二步:修正model.fit的传参逻辑:
    • 若你是手动拆分的输入和标签,将调用写法改为model.fit(x=train_x, y=train_y, ...),其中train_x是训练文本序列,train_y是对应的5分类标签。
    • 若你是用tf.data.Dataset构造的数据集,检查数据集构造逻辑,保证每次迭代返回的是(输入序列, 5维标签)的元组,不要把输入序列当成标签返回。
  • 可选简化方案:如果你的标签是0~4的整数类别编码,不想做one-hot转换,可以直接修改损失函数为sparse_categorical_crossentropy,无需调整模型结构,仅修改compile代码即可:
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

调整后标签形状仅需为(样本数,)或(batch_size,)即可,无需额外做one-hot编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:51:03