TensorFlow三分类情感分析报错:标签值3超出[0,3)有效范围如何解决?
问题原因及解决方案
报错修复
你遇到的报错由三个可修复的问题导致:
- 标签范围不匹配:
sparse_categorical_crossentropy损失要求类别标签为从0开始的连续整数,你当前的标签是1/2/3,3分类对应的合法范围是[0,3)也就是只能取0、1、2,因此标签值3会触发越界报错。直接对标签做统一偏移即可:
调整后标签对应规则变为0='negative', 1='neutral', 2='positive'。y_train = y_train - 1 y_test = y_test - 1 - 输出层激活函数错误:多分类任务需要输出每个类别的概率分布,最后一层全连接层不能用relu激活,需替换为softmax:
tf.keras.layers.Dense(3, activation='softmax') - 测试集预处理逻辑错误:你当前生成测试集padding序列时,错误传入了训练集的序列
training_sequence,会导致后续模型评估完全失效,修改为:test_padding = pad_sequences(testing_sequence, maxlen=max_length, padding=padding_type)
Sequential是否支持多分类
完全支持。二分类只是多分类的特殊场景,Sequential没有分类类别数的限制,只要输出层神经元数量和类别数匹配、激活函数与损失函数对应即可:
- 标签为整数格式:输出层用softmax激活,损失选
sparse_categorical_crossentropy - 标签为one-hot编码格式:输出层用softmax激活,损失选
categorical_crossentropy
内容的提问来源于stack exchange,提问作者ddinfiwis
相关产品推荐
相关产品推荐

