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

使用image_dataset_from_directory时遇ValueError:数组真值判断歧义

解决image_dataset_from_directory传入自定义标签的报错问题

报错原因

你遇到的问题源于LabelEncoder.fit_transform返回的是numpy数组,而tf.keras.utils.image_dataset_from_directory的labels参数要求传入Python原生的列表/元组类型。当传入numpy数组时,函数内部的if labels not in ("inferred", None)判断会触发numpy数组与字符串的逐元素比较,导致逻辑歧义,最终抛出ValueError。

解决方案

只需将numpy数组格式的标签转换为Python原生列表或元组即可:

方法1:用tolist()转换(推荐)

修改标签编码代码,直接将numpy数组转为列表:

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
# 将numpy数组结果转为Python列表
y_train = encoder.fit_transform(list(y_train["breed"])).tolist()

方法2:用list()包裹转换

也可以直接用list()包裹numpy数组完成转换:

y_train = list(encoder.fit_transform(list(y_train["breed"])))

额外注意事项

必须保证自定义标签的顺序与image_dataset_from_directory加载图片的顺序完全一致——也就是图片按路径字母数字排序后的顺序。如果你的y_train["breed"]对应的图片文件名本身就是按这个规则排列的,转换后直接使用即可;如果不是,需要先将图片文件名按规则排序,再对应匹配标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:37:11