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

重新加载Hugging Face微调后的DistilBert模型后如何预测?

如何使用重新加载的DistilBertForSequenceClassification模型做文本分类预测

直接调用model.predict("sample sentence")行不通,因为DistilBert模型接收的是经过Tokenizer预处理后的张量输入,不是原始字符串。按以下步骤就能完成预测:

步骤1:加载训练时对应的Tokenizer

你微调模型用的是DistilBert,必须加载同版本的DistilBertTokenizer(或DistilBertTokenizerFast),和训练时保持一致:

from transformers import DistilBertTokenizerFast

# 加载Tokenizer,和你训练时使用的基础Tokenizer一致即可
tokenizer = DistilBertTokenizerFast.from_pretrained("distilbert-base-uncased")

步骤2:预处理输入句子

把原始句子转换成模型能识别的张量格式,需包含特殊标记、padding/truncation处理:

sample_sentence = "这里是你的测试句子"
inputs = tokenizer(
    sample_sentence,
    truncation=True,
    padding=True,
    return_tensors="pt"  # 返回PyTorch格式的张量
)

步骤3:使用模型进行推理

先把模型切换到评估模式,再执行推理,最后解析输出得到预测标签:

import torch

# 切换模型到评估模式,禁用训练时的dropout等层
reloadtrainer.eval()

# 关闭梯度计算,节省资源
with torch.no_grad():
    outputs = reloadtrainer(**inputs)

# 获取模型输出的logits(未经过softmax的原始分数)
logits = outputs.logits

# 找到logits中最大值对应的索引,即为预测的标签ID
predicted_label_id = torch.argmax(logits, dim=1).item()

# 映射到原始标签文本(根据你训练时的标签列表修改)
# 示例:假设训练时的标签是["正面", "负面", "中性"]
label_map = ["正面", "负面", "中性"]
predicted_label = label_map[predicted_label_id]

print(f"预测标签ID: {predicted_label_id}")
print(f"预测标签文本: {predicted_label}")

补充提示

  • 如果训练时用了自定义标签映射,建议把标签列表保存成json文件和模型放在一起,加载模型时同步读取,避免标签对应错误。
  • 你的变量名reloadtrainer是模型对象,建议改成model更清晰,避免和HuggingFace的Trainer类混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:27:36