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

基于TFX的MLOps:使用Keras Sequence时如何导入数据?

关于TFX数据导入与CsvExampleGen的问题解答

问题背景

我正在使用一个名为DataGenerator的类,该类继承自tensorflow.keras.utils.Sequence,返回元组(data_array, label_array),代码如下:

from tensorflow.keras.utils import Sequence

class DataGenerator(Sequence):
    """
    path_data: the path of the csv files
    """
...

该类读取目录下的多个.csv文件(每个文件对应单个实例的大体积数据,文件内容为单列数值),但不清楚如何通过tfx.v1.components.CsvExampleGen在TFX管道中完成数据导入,有两个疑问:

  1. 是否可以使用TFX进行数据导入,还是需要寻找其他替代方案?
  2. 能否使用CsvExampleGen读取目录下的批量文件?

问题1解答

完全可以用TFX完成这类数据的导入,不需要立刻更换其他方案。
TFX灵活性很高,虽然默认的CsvExampleGen是按行解析CSV数据为单个实例,但针对你这种“单文件对应单个大体积实例”的场景,有两种适配思路:

  • 先做数据预处理:把每个单列CSV的所有数值合并成一行的单个字段(比如用逗号拼接成字符串,后续在TFX的Transform组件里再解析为张量),再用CsvExampleGen读取处理后的文件。
  • 自定义ExampleGen组件:继承TFX的BaseExampleGen类,参考你现有DataGenerator的逻辑,实现从单个CSV文件生成单个TF Example的逻辑,直接接入TFX管道。

问题2解答

CsvExampleGen可以读取目录下的批量CSV文件,但默认行为是把每个CSV里的每一行当作一个训练实例,和你的“单文件对应单个实例”需求不匹配。
如果要直接用CsvExampleGen,必须先调整数据格式:比如写脚本遍历所有CSV文件,把每个文件的单列数据转换成一行(例如将所有数值用分隔符拼接成一个单元格),同时补充对应的标签字段,生成符合CsvExampleGen预期的CSV文件后再导入。如果不想修改原始数据,更推荐自定义ExampleGen组件来适配你的数据结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:50:25