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

HuggingFace超参数调优中collate_fn报KeyError('text')的解决方法

解决KeyError('text')与自定义collate_fn适配问题

错误原因

出现KeyError('text'),大概率是你的自定义collate_fn里写错了字段名——明明数据集有text列,却在函数里用了别的键来访问,或者数据加载时不小心修改了字段的键名。

代码修改示例

假设你原来的collate_fn是误用了其他键(比如写成了'tweet'),修改后的正确版本如下:

import torch
from transformers import AutoTokenizer

# 初始化你的tokenizer
tokenizer = AutoTokenizer.from_pretrained("你的预训练模型名称")

def collate_fn(batch):
    # 从每个样本中正确提取text列的内容
    texts = [item['text'] for item in batch]
    # 提取标签列majority_votes
    labels = [item['majority_votes'] for item in batch]
    
    # 批量处理文本,生成模型所需的输入张量
    tokenized_inputs = tokenizer(
        texts,
        padding=True,  # 自动padding到batch内最长文本长度
        truncation=True,  # 超过模型最大长度则截断
        return_tensors="pt"  # 返回PyTorch张量
    )
    
    # 将标签转为PyTorch张量,适配模型训练格式
    tokenized_inputs['labels'] = torch.tensor(labels, dtype=torch.long)
    
    return tokenized_inputs

注意:如果用Hugging Face Dataset加载数据,别做类似dataset = dataset.rename_column("text", "tweet")的操作,避免字段名不匹配。

collate_fn的核心作用

  • 统一处理变长样本:PyTorch默认的批量处理只会堆叠同维度张量,但文本是变长的,collate_fn可以统一做tokenization、padding/truncation,把变长文本转成模型能接受的固定维度张量。
  • 适配模型输入格式:把数据集里的原始字段(text、majority_votes)转换成模型需要的输入结构(比如input_ids、attention_mask、labels),让模型可以直接读取batch数据训练。
  • 自定义预处理逻辑:你还能在里面加文本清洗、标签映射、多模态数据整合等操作,完全贴合你的任务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:53:11