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

Simple Transformers训练T5报KeyError:'target_text'原因及解决

问题说明

使用Simple Transformers框架训练T5模型时抛出KeyError: 'target_text',本质是框架的数据加载逻辑在传入的训练DataFrame中,未匹配到T5任务强制要求的target_text必填字段。

常见诱因
  • 传入模型的训练/验证DataFrame缺少T5模块规定的三个必填列:prefix(任务标识前缀)、input_text(模型接收的输入文本)、target_text(模型需要学习生成的目标文本)。从提供的代码看,仅手动新增了prefix列,未定义input_text和target_text列,这是触发本次报错的直接原因。
  • 数据集列名存在格式问题:比如列名拼写错误、首尾带多余空格、大小写不匹配(如写成Target_Text、target_text ),框架做精确字段匹配时无法识别。
  • 数据预处理、数据集切分环节误操作,意外删除了target_text等必填列。
排查解决步骤
  • 第一步:校验数据集列完整性。执行print(train_df.columns.tolist())打印训练集所有列名,确认是否同时存在prefix、input_text、target_text三个字段,定位缺失的列。
  • 第二步:完成原始数据到框架要求格式的列映射。将CSV文件中存储输入内容、目标输出内容的原始列,分别重命名/赋值给input_text和target_text字段,示例代码如下:
    # 请将引号内的内容替换为CSV中实际对应的列名
    df["input_text"] = df["你的原始输入文本列名"]
    df["target_text"] = df["你的原始目标生成文本列名"]
    
  • 第三步:清理列名隐藏格式问题。如果列名视觉上匹配但仍报错,可统一对列名做去空格、标准化处理,避免不可见字符导致匹配失败:
    df.columns = [col.strip().lower() for col in df.columns]
    
  • 第四步:数据集切分后增加校验逻辑,避免切分过程丢列:
    required_columns = ["prefix", "input_text", "target_text"]
    assert all(col in train_df.columns for col in required_columns), "训练集缺少必填字段"
    assert all(col in eval_df.columns for col in required_columns), "验证集缺少必填字段"
    
修正后的参考代码
!pip install SimpleTransformers

import pandas as pd
from sklearn.model_selection import train_test_split
from simpletransformers.t5 import T5Model, T5Args

# 读取原始数据集
df = pd.read_csv('/content/Vastu - Sheet1 (4).csv', sep=',')

# 构造T5要求的标准数据格式,注意替换为自己数据集的实际列名
df["prefix"] = "ask_question"
df["input_text"] = df["替换为存储输入内容的原始列名"]
df["target_text"] = df["替换为存储目标输出内容的原始列名"]

# 切分训练、验证集,仅保留必填列减少冗余
train_df, eval_df = train_test_split(
    df[["prefix", "input_text", "target_text"]], 
    test_size=0.05
)

# 配置训练参数
model_args = T5Args()
model_args.num_train_epochs = 3

# 初始化模型
model = T5Model(
    model_type='t5',
    model_name="t5-base",
    args=model_args,
    use_cuda=False
)

# 启动训练,可传入验证集同步做训练中评估
model.train_model(train_df, eval_data=eval_df)

注意:列映射时不要搞反input_text和target_text的内容,input_text是模型的输入依据,target_text是模型要学习生成的正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:54:27