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

TensorFlow NLP情感分类模型损失函数形状不匹配错误求助

问题分析与解决方案

核心错误原因

你的报错源于损失函数与标签格式不匹配:

  • 你已将标签做独热编码(形状[16,6],对应16个样本×6个类别),但误用了SparseCategoricalCrossentropy——这个损失函数专门针对整数型标签(形状[16,],每个样本对应单个类别索引)。
  • 模型最后一层使用softmax激活,from_logits=True的设置也错误,因为softmax已将输出转换为概率分布,并非原始logits。

解决方案

1. 修正损失函数配置

将模型编译部分的损失函数替换为CategoricalCrossentropy,并设置from_logits=False:

model.compile(optimizer='adam',
              loss=tf.keras.losses.CategoricalCrossentropy(from_logits=False),
              metrics=['accuracy'])

2. 修复测试集数据划分错误

原代码中测试集取值范围错误,导致训练集与测试集重叠:

# 错误代码
x_test = sentences[val_size:]
y_test = catagorical_labels[val_size:]

# 修正后
x_test = sentences[training_size+val_size:]
y_test = catagorical_labels[training_size+val_size:]

(原数据集train.txt共16000条数据,训练集14000+验证集1000=15000,测试集应取最后1000条)

额外优化建议

若不想使用独热编码,可直接用整数型标签(int_labels数组),此时保留SparseCategoricalCrossentropy损失函数,但需去掉to_categorical步骤,同时from_logits仍设为False(因最后一层是softmax)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:01:02