You need to enable JavaScript to run this app. TensorFlow提取UTKFace文件名标签时报StringToNumber转换错误及Tensor显示疑问
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow提取UTKFace文件名标签时报StringToNumber转换错误及Tensor显示疑问

批量遍历触发InvalidArgumentError的原因
  • 根本诱因是UTKFace公开数据集存在命名不规范的脏文件,并非你编写的解码逻辑本身有问题。
    标准UTKFace文件的命名规则是年龄_性别_种族_时间戳.jpg.chip.jpg,但官方发布的版本里混杂了部分命名缺失的文件,按_拆分文件名后会出现空字符串片段。当tf.strings.to_number尝试把空字符串转换为整型时,就会抛出报错信息里提到的“无法正确转换字符串”的异常,报错提示里“convert string:”后无具体内容,正是空字符串被传入转换接口的表现。
  • 单条校验没有报错的原因:你做单条测试时是随机抽样,恰好命中的都是命名合规的样本;当对数据集应用.batch()后遍历全量文件时,才会扫到之前随机抽取没碰到的异常命名文件,触发运行时错误。
  • 修复方向:在构建文件列表的阶段增加文件筛选逻辑,把命名不满足「下划线拆分后前3段全为纯数字」的文件从数据集里过滤掉,从根源避免解码时的字符串转换异常。
标签Tensor的类型识别
  • 你看到的输出tf.Tensor([1 0 2], shape=(3,), dtype=int64)是形状为(3,)的一维int64类型数值张量,完全符合标签提取的预期结果。
  • 打印内容不带逗号是TensorFlow Eager模式下一维张量的默认显示规则,和NumPy一维数组的打印逻辑完全一致;你预期的带逗号分隔的样式(如[1, 0, 2])是Python原生列表的打印风格,并不代表张量类型存在问题。这个张量可以直接作为多维度标签送入模型训练,不需要做额外格式调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 14:06:08