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

DistilBert隐喻检测序列分类模型训练报错:未返回loss仅输出logits

问题分析

报错核心原因是训练数据未传入模型所需的labels字段,AutoModelForSequenceClassification仅在输入包含labels时才会自动计算交叉熵损失并返回loss值;若缺少标签,模型只会输出logits,无法完成损失计算。此外,原始数据集加载方式未正确拆分标签与句子文本,是导致问题的根本原因。

修复步骤

1. 正确拆分数据集的标签与文本

原始数据集每行格式为编号 类型 标签 句子,需拆分出label(M/N)和text(句子内容):

def parse_line(line):
    parts = line.strip().split(maxsplit=3)  # 按空格拆分,最多拆3次,保留句子内空格
    if len(parts) < 4:
        return {"text": "", "label": ""}
    _, _, label, text = parts
    # 将M/N转为数值标签:M=1,N=0(可按需调整)
    return {"text": text, "label": 1 if label == "M" else 0}

# 加载数据集并解析每一行
dataset = load_dataset('text', data_files='/content/drive/MyDrive/project/metaphors_dataset.txt')
dataset = dataset["train"].map(parse_line)

# 拆分训练/验证/测试集(保留原逻辑)
train_testvalid = dataset.train_test_split(test_size=0.1)
test_valid = train_testvalid['test'].train_test_split(test_size=0.5)
train_test_valid_dataset = DatasetDict({
    'train': train_testvalid['train'],
    'test': test_valid['test'],
    'valid': test_valid['train']})

2. 更新预处理函数,保留标签字段

预处理时需将标签保留,避免被过滤:

def preprocess_function(examples):
    tokenized = tokenizer(examples["text"], truncation=True)
    # 保留标签字段
    tokenized["labels"] = examples["label"]
    return tokenized

tokenized_train = train_test_valid_dataset["train"].map(preprocess_function, batched=True)
tokenized_test = train_test_valid_dataset["test"].map(preprocess_function, batched=True)

3. 修正DataCollator定义

确保data_collator正确处理标签,使用DataCollatorWithPadding(需提前导入):

from transformers import DataCollatorWithPadding

data_collator = DataCollatorWithPadding(tokenizer=tokenizer)

4. 验证模型加载(可选)

若之前的掩码微调模型是PyTorch格式,无需from_tf=True;若为TensorFlow导出模型则保留该参数:

# PyTorch权重格式时,去掉from_tf=True
model = AutoModelForSequenceClassification.from_pretrained(path_model, num_labels=2)
最终验证

完成上述修改后,trainer.train()时输入数据会包含input_ids、attention_mask和labels,模型会自动计算损失并返回,训练即可正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:54:53