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

如何从Hugging Face文本分类pipeline获取logits或原始模型分数?

解决Hugging Face情感分析Pipeline获取Logits与完整概率分布的问题

你当前用默认sentiment-analysis pipeline只能拿到单类别或所有类别的softmax后概率,要获取原始logits(softmax前的输出)或完整概率分布,可通过以下两种方式实现:

方法一:直接使用Tokenizer与Model(推荐)

跳过封装好的pipeline,直接调用模型和tokenizer,能完整获取模型输出的logits,同时也能自行计算完整概率分布:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# 加载目标模型与对应的tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

# 处理输入文本
text = "I love this movie!"
inputs = tokenizer(text, return_tensors="pt")

# 禁用梯度计算,提升推理效率
with torch.no_grad():
    outputs = model(**inputs)

# 获取softmax前的原始logits
raw_logits = outputs.logits
print("原始Logits:", raw_logits)

# 计算所有类别的概率分布(手动执行softmax)
prob_distribution = torch.nn.functional.softmax(raw_logits, dim=-1)
print("完整类别概率分布:", prob_distribution)

# 映射标签ID到标签名称,输出每个类别的概率
id2label = model.config.id2label
for idx, prob in enumerate(prob_distribution[0]):
    print(f"{id2label[idx]}: {prob.item():.4f}")

方法二:修改Pipeline配置返回完整结果

如果想继续使用pipeline,可通过return_all_scores=True获取所有类别的softmax概率,若需要logits则需额外调用模型:

from transformers import pipeline
import torch

# 创建pipeline时指定return_all_scores=True
clf = pipeline("sentiment-analysis", return_all_scores=True)
result = clf("I love this movie!")
print("所有类别softmax概率:", result)

# 直接调用pipeline内置的模型获取logits
text = "I love this movie!"
inputs = clf.tokenizer(text, return_tensors="pt")
with torch.no_grad():
    outputs = clf.model(**inputs)
print("原始Logits:", outputs.logits)

关键说明

  • return_all_scores=True仅返回所有类别的softmax后概率,而非原始logits,这就是你之前设置后仍得不到logits的原因。
  • 原始logits是模型输出的未经过激活函数(softmax)的原始值,适合用于分数校准、温度缩放这类需要原始输出的操作;完整概率分布则可直接用于计算置信区间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:38:10