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

Keras flow_from_dataframe categorical模式标签类型不符报错咨询

解决flow_from_dataframe中class_mode='categorical'的类型错误

咱们先把问题拆解开来看:你想用class_mode='categorical'处理多标签的独热编码列,但这个模式的设计逻辑和你当前的数据格式不匹配,才导致了报错。

问题根源

报错信息里说得很明确:当class_mode="categorical"时,y_col对应的列值需要是字符串、列表或元组类型的类别标签,而不是你现在用的0/1数值型独热编码数据。你把y_col设为['N','D','G','C','A','H','M','O']这些列,它们本质是已经处理好的独热编码维度,而非类别标签文本,这就和categorical模式的预期完全不符了。

正确的解决方案

针对已经是独热编码格式的多标签二维数组,你需要将class_mode改为'raw'——这个模式专门用来处理自定义的数值型标签数据,完美适配你现在的多标签独热列。修改后的代码如下:

train_generator_1 = train_data_gen.flow_from_dataframe(
    annotation, 
    directory="data", 
    target_size=(img_shape, img_shape), 
    x_col="Left", 
    y_col=['N','D','G','C','A','H','M','O'], 
    class_mode='raw',  # 这里替换为raw模式
    shuffle=False, 
    batch_size=batch_size, 
    seed=7
)

额外补充

如果你的标签原本是类别名称(比如某一行的标签是['N', 'D']这样的多标签列表),那用class_mode='categorical'才是正确的,Keras会自动帮你转换成独热编码。但现在你的数据已经是现成的独热数值列,'raw'才是最适配的选择。

内容的提问来源于stack exchange,提问作者Talha Anwar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:07:46