使用预训练Huggingface模型推理时输出格式不符求助
问题分析
你错误使用了模型的last_hidden_state(隐藏层特征输出)来计算预测结果,这部分输出是模型对每个输入token的特征表示,并非分类任务的预测概率。分类任务需要用模型输出的logits(预测对数概率)来处理。
解决方案
以下是适配二分类情感分析场景的修改代码,可输出你期望的标签+概率格式:
# 执行模型预测 outputs = model( ids, mask, token_type_ids ) # 获取分类任务对应的logits,形状通常为(batch_size, num_labels) logits = outputs.logits # 处理二分类场景:用sigmoid计算POSITIVE类别概率,NEGATIVE概率为1减去该值 positive_score = torch.sigmoid(logits[0][0]).cpu().detach().item() negative_score = 1 - positive_score # 格式化为目标输出形式 result = [ {'label': 'POSITIVE', 'score': positive_score}, {'label': 'NEGATIVE', 'score': negative_score} ] return result
补充说明
- 若你的模型是多分类任务(
num_labels>2),需用torch.softmax计算各类别概率再映射到标签:probs = torch.softmax(logits[0], dim=-1).cpu().detach().numpy() # 替换为你的实际标签列表 labels = ['LABEL_A', 'LABEL_B', 'LABEL_C'] result = [{'label': labels[i], 'score': float(probs[i])} for i in range(len(labels))] - 确保使用的是分类预训练模型(如
bert-base-uncased-finetuned-sst-2-english这类情感分析微调模型),若为基础模型(如bert-base-uncased),需加载对应分类头或完成微调后才能输出正确的分类logits。
内容的提问来源于stack exchange,提问作者ZL RONG
相关产品推荐
相关产品推荐

