趋近智
tf.distribute.Strategy 概述任何可靠的机器学习系统的根本是可信赖的数据。在生产环境中,数据持续流入,可能来自不同来源,并且其特性会随时间变化。手动检查每个批次是不可行的。TFX 提供自动化组件来处理最初的重要步骤:将数据引入到管道中并彻底验证其完整性。ExampleGen、StatisticsGen 和 SchemaGen 是负责数据摄取并为其预期结构和属性建立基准的组件。
大多数 TFX 管道中的第一个活动组件是 ExampleGen。其主要作用是从外部源摄取数据,并将其转换为适用于下游 TFX 组件的格式,通常是包含序列化 tf.train.Example 协议缓冲区的 TFRecord 文件。tf.train.Example 是 TensorFlow 中表示特征数据的标准格式,能够处理多种数据类型。
ExampleGen 开箱即用地支持多种输入格式,包括 CSV、TFRecord、Avro 和 Parquet。您可以通过指定输入源位置和所需的输出拆分(例如,'train' 和 'eval')来配置它。例如,要从 CSV 文件目录中摄取数据,您可以使用 CsvExampleGen:
# TFX 组件配置示例(在管道定义中)
from tfx.components import CsvExampleGen
from tfx.utils.dsl_utils import external_input
# 指向包含 CSV 文件的目录
data_root = external_input("/path/to/your/csv/data")
# 配置 CsvExampleGen
example_gen = CsvExampleGen(input_base=data_root)
# 下游组件将访问 example_gen.outputs['examples']
ExampleGen 通常将数据划分为至少两个拆分:train 用于模型训练,eval 用于评估和验证。这种划分可以根据文件模式或比例进行配置。输出是 TFRecord 文件的集合,可以通过组件的 examples 输出通道访问,为管道的后续阶段做好准备。
数据摄取后,下一步是了解其特性。StatisticsGen 计算由 ExampleGen 生成的数据集的描述性统计数据。它独立处理每个拆分('train'、'eval')。
StatisticsGen 的输出是一个 DatasetFeatureStatisticsList 协议缓冲区,其中包含数据集中每个特征的详细统计数据。这些包括:
这些统计数据提供了数据的量化摘要。它们对于以下方面很重要:
可视化这些统计数据通常很有帮助。例如,我们可以查看'年龄'等数值特征的分布,或者'产品类别'等特征不同类别的频率。
直方图显示了示例“年龄”特征的频率分布。
条形图展示了“产品类别”特征中不同值的频率计数。
这些统计数据会被后续组件(如 SchemaGen 和 ExampleValidator)使用。
统计数据计算完成后,SchemaGen 推断出数据模式。模式作为正式契约,定义了管道应处理的数据的预期属性。它规范了对特征名称、类型、存在性以及值范围或域的预期。
SchemaGen 分析 StatisticsGen 的输出统计数据,以生成初始的 Schema 协议缓冲区。此模式通常定义:
required)、可选的 (optional),或者可以缺失 (min_count、min_fraction)。single) 还是值的列表/向量 (multi)。# 简化的 tf.metadata.proto.v0.Schema 结构示例
feature {
name: "age"
type: FLOAT
presence {
min_fraction: 1.0 # 在所有样本中都是必需的
}
# domain: "age_range" # 可选域名称
}
feature {
name: "product_category"
type: BYTES # 字符串通常表示为 BYTES
domain: "product_category" # 引用 string_domain 定义
presence {
min_fraction: 1.0
}
}
string_domain {
name: "product_category"
value: "Electronics"
value: "Clothing"
value: "Home Goods"
value: "Books"
value: "Toys"
}
虽然 SchemaGen 提供了一个好的起始点,但推断出的模式通常需要手动审查和管理。例如:
这个经过管理的模式成为与管道代码一起管理的重要产物。它确保后续组件,特别是 Transform 和 Trainer,接收到符合预期的数据。
ExampleValidator 组件(通常在 SchemaGen 或 StatisticsGen 之后立即使用)使用模式和统计数据来检测数据中的异常。它将给定数据拆分的统计数据与模式中定义的预期进行比较。如果发现不一致,它会生成一个 Anomalies 协议缓冲区,详细说明问题。
常见检测到的异常包括:
以下图表展示了这些初始组件的典型流程:
流程图展示了 TFX 管道中
ExampleGen、StatisticsGen、SchemaGen和ExampleValidator之间的相互作用。
及早检测异常可以防止有问题的数据在管道中传播,从而提高训练过程和生成模型的可靠性。如果检测到严重异常,甚至可以配置管道执行停止。
ExampleGen、StatisticsGen、SchemaGen 和 ExampleValidator 共同构成了一个系统,用于摄取数据、了解其属性、通过模式定义预期,并根据这些预期验证传入数据。这个自动化过程对于使用 TFX 构建稳定且可维护的生产级机器学习管道非常重要。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造