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

如何使用TensorFlow的flow_from_dataframe处理独热编码输出

错误原因

你当前的报错是因为DataFrame的age列存储的是字符串格式的独热编码,flow_from_dataframe无法直接将字符串解析为可用于训练的数值标签,即使设置class_mode="raw"也会因为数据类型不匹配失效。

解决步骤

步骤1:预处理age列,转换为数值数组

将字符串格式的独热编码转换为数值类型的numpy数组:

import numpy as np

training_data['age'] = training_data['age'].apply(
    lambda x: np.array([int(num) for num in x.strip('[]').split()], dtype=np.float32)
)

处理后可以通过print(training_data['age'].iloc[0].shape)验证,输出应为(23,)即符合要求。

步骤2:调整flow_from_dataframe参数

保持class_mode="raw"配置,直接使用预处理好的标签数组:

train_data_generator = idg.flow_from_dataframe(
    dataframe=training_data,
    x_col="image_name",
    y_col="age",
    class_mode="raw",
    shuffle=True,
    target_size=(227, 227),
)

可选优化方案

如果不需要提前存储完整独热编码,也可以直接提取类别索引存入age列,减少内存占用:

# 提取独热编码中1对应的位置下标作为类别标签
training_data['age'] = training_data['age'].apply(
    lambda x: x.strip('[]').split().index('1')
)

此时调用flow_from_dataframe时设置class_mode="categorical"即可,接口会自动完成独热编码转换,无需提前处理为数组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:45:03