TensorFlow Estimator训练报错怎么办?教你一招避坑

发布时间:2026/6/20 13:09:34
TensorFlow Estimator训练报错怎么办?教你一招避坑 博客主页瑕疵的CSDN主页 Gitee主页瑕疵的gitee主页⏩ 文章专栏《热点资讯》特征列没对齐TensorFlow Estimator训练报错实录一招解救目录今天写了个Estimator模型训练跑起来直接报错ValueError: Feature age not found in input data我当场就懵了。数据里age列明明有值pandas一查全是数字。折腾到凌晨三点才发现是特征列和输入数据的键名对不上。报错现场控制台甩出这个错误我反复检查数据dfpd.read_csv(data.csv)print(df.columns)# 输出 [age , income, label] # 注意age后面有空格列名明明有空格但特征列定义写的是age。Estimator在内部匹配时严格按字符串比对。空格都算不同。核心根源特征列定义的列名必须和输入函数返回的特征字典键名完全一致包括空格和大小写。我犯的错是数据列名实际是age 末尾空格但特征列写成tf.feature_column.numeric_column(age)输入函数返回的特征字典键是age Estimator却去匹配age自然找不到。错误示范# 错误示范特征列和数据列名不一致feature_columns[tf.feature_column.numeric_column(age),# 期望age但数据是age tf.feature_column.numeric_column(income)]definput_fn():dfpd.read_csv(data.csv)# 数据列名有空格但这里直接用age键名实际是age featuresdf[[age]]# 返回的特征字典键是age 带空格labelsdf[label]returnfeatures,labels正确姿势# 正确姿势先清理列名确保和特征列一致feature_columns[tf.feature_column.numeric_column(age),# 和清理后的列名匹配tf.feature_column.numeric_column(income)]definput_fn():dfpd.read_csv(data.csv)# 关键清理列名移除所有前后空格df.columns[col.strip()forcolindf.columns]featuresdf[[age,income]]# 现在键名是age无空格labelsdf[label]returnfeatures,labels避坑总结读数据后必须打印列名print(df.columns.tolist())别猜。输入函数前清理列名df.columns [col.strip() for col in df.columns]。特征列定义用清理后的列名别写死age。如果数据来自Excel/CSV列名常带空格这是常态。我踩过坑数据列名是age 特征列写age报错整整三小时。清理列名后训练秒过。记住Estimator对字符串比对比你想象的严格。下次写代码先print(df.columns)别让空格坑你。