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

TensorFlow分类模型标签加载异常,设置3类softmax层报形状不兼容错误

报错原因

核心问题是标签格式、取值与损失函数要求不匹配,和vectorize_text函数的文本处理逻辑无关:

  • 你使用的categorical_crossentropy损失要求标签为独热编码格式(shape为(样本数, 3)),但当前输入的标签是1/2/3的整数,shape为(样本数, 1),二者维度不匹配触发报错。
  • 3分类任务的类别标签需要从0开始取值(0/1/2),当前标签为1/2/3,超出了输出层的索引范围,即使维度匹配也会出现计算错误。
解决方案

有两种可直接落地的修复方案,推荐选择方案1,改动最小:

方案1:替换损失函数+修正标签取值

  1. 修正标签取值,在生成df_train_bogus后添加一行代码,将标签转为0/1/2:
df_train_bogus['labels'] = df_train_bogus['labels'] - 1
  1. 替换模型编译时的损失函数为sparse_categorical_crossentropy,该损失原生支持整数标签,无需做独热编码:
model.compile(loss="sparse_categorical_crossentropy",
              optimizer="adam",
              metrics=["accuracy"])

方案2:保持原损失函数,对标签做独热编码

如果需要保留categorical_crossentropy,可对标签做独热转换适配:

  1. 同样先执行标签减1操作,修正取值范围为0/1/2
  2. 修改vectorize_text函数,对标签做独热编码:
def vectorize_text(text, labels):
  text = tf.expand_dims(text, -1)
  labels = tf.one_hot(labels, depth=3)
  return vectorize_layer(text), labels

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:36:03