TensorFlow Transform

TensorFlow Transform 是一个使用 TensorFlow 预处理数据的库。 tf.Transform 适用于需要完整遍历的数据,例如

  • 通过均值和标准差对输入值进行归一化。
  • 通过对所有输入值生成词汇表将字符串转换为整数。
  • 通过根据观察到的数据分布将浮点数分配到桶中来将浮点数转换为整数。

TensorFlow 内置支持对单个示例或一批示例进行操作。 tf.Transform 扩展了这些功能以支持对示例数据进行完整遍历。

tf.Transform 的输出以 TensorFlow 图 的形式导出,用于训练和提供服务。在训练和提供服务时使用相同的图可以防止偏差,因为在两个阶段都应用了相同的转换。

有关 tf.Transform 的介绍,请参阅 TFX Dev Summit 演讲中有关 TFX 的 tf.Transform 部分 (链接).

安装

tensorflow-transform PyPI 包 是安装 tf.Transform 的推荐方法

pip install tensorflow-transform

从源代码构建 TFT

要从源代码构建,请按照以下步骤操作:通过运行以下命令创建虚拟环境

python3 -m venv <virtualenv_name>
source <virtualenv_name>/bin/activate
pip3 install setuptools wheel
git clone https://github.com/tensorflow/transform.git
cd transform
python3 setup.py bdist_wheel

这将在 dist 目录中构建 TFT 轮子。要从 dist 目录安装轮子,请运行以下命令

cd dist
pip3 install tensorflow_transform-<version>-py3-none-any.whl

每日构建包

TFT 还托管 Google Cloud 上的 https://pypi-nightly.tensorflow.org 上的每日构建包。要安装最新的每日构建包,请使用以下命令

pip install --extra-index-url https://pypi-nightly.tensorflow.org/simple tensorflow-transform

这将安装 TFT 主要依赖项(如 TensorFlow Metadata (TFMD)、TFX Basic Shared Libraries (TFX-BSL))的每日构建包。

值得注意的依赖项

需要 TensorFlow。

Apache Beam 是必需的;它是支持高效分布式计算的方式。默认情况下,Apache Beam 在本地模式下运行,但也可以使用 Google Cloud Dataflow 和其他 Apache Beam 运行器 在分布式模式下运行。

Apache Arrow 也是必需的。TFT 使用 Arrow 在内部表示数据,以便利用向量化的 numpy 函数。

兼容版本

下表列出了彼此兼容的 tf.Transform 包版本。这是由我们的测试框架确定的,但其他未测试的组合也可能有效。

tensorflow-transform apache-beam[gcp] pyarrow tensorflow tensorflow-metadata tfx-bsl
GitHub master 2.47.0 10.0.0 nightly (2.x) 1.15.0 1.15.1
1.15.0 2.47.0 10.0.0 2.15 1.15.0 1.15.1
1.14.0 2.47.0 10.0.0 2.13 1.14.0 1.14.0
1.13.0 2.41.0 6.0.0 2.12 1.13.1 1.13.0
1.12.0 2.41.0 6.0.0 2.11 1.12.0 1.12.0
1.11.0 2.41.0 6.0.0 1.15.5 / 2.10 1.11.0 1.11.0
1.10.0 2.40.0 6.0.0 1.15.5 / 2.9 1.10.0 1.10.0
1.9.0 2.38.0 5.0.0 1.15.5 / 2.9 1.9.0 1.9.0
1.8.0 2.38.0 5.0.0 1.15.5 / 2.8 1.8.0 1.8.0
1.7.0 2.36.0 5.0.0 1.15.5 / 2.8 1.7.0 1.7.0
1.6.1 2.35.0 5.0.0 1.15.5 / 2.8 1.6.0 1.6.0
1.6.0 2.35.0 5.0.0 1.15.5 / 2.7 1.6.0 1.6.0
1.5.0 2.34.0 5.0.0 1.15.2 / 2.7 1.5.0 1.5.0
1.4.1 2.33.0 4.0.1 1.15.2 / 2.6 1.4.0 1.4.0
1.4.0 2.33.0 4.0.1 1.15.2 / 2.6 1.4.0 1.4.0
1.3.0 2.31.0 2.0.0 1.15.2 / 2.6 1.2.0 1.3.0
1.2.0 2.31.0 2.0.0 1.15.2 / 2.5 1.2.0 1.2.0
1.1.1 2.29.0 2.0.0 1.15.2 / 2.5 1.1.0 1.1.1
1.1.0 2.29.0 2.0.0 1.15.2 / 2.5 1.1.0 1.1.0
1.0.0 2.29.0 2.0.0 1.15 / 2.5 1.0.0 1.0.0
0.30.0 2.28.0 2.0.0 1.15 / 2.4 0.30.0 0.30.0
0.29.0 2.28.0 2.0.0 1.15 / 2.4 0.29.0 0.29.0
0.28.0 2.28.0 2.0.0 1.15 / 2.4 0.28.0 0.28.1
0.27.0 2.27.0 2.0.0 1.15 / 2.4 0.27.0 0.27.0
0.26.0 2.25.0 0.17.0 1.15 / 2.3 0.26.0 0.26.0
0.25.0 2.25.0 0.17.0 1.15 / 2.3 0.25.0 0.25.0
0.24.1 2.24.0 0.17.0 1.15 / 2.3 0.24.0 0.24.1
0.24.0 2.23.0 0.17.0 1.15 / 2.3 0.24.0 0.24.0
0.23.0 2.23.0 0.17.0 1.15 / 2.3 0.23.0 0.23.0
0.22.0 2.20.0 0.16.0 1.15 / 2.2 0.22.0 0.22.0
0.21.2 2.17.0 0.15.0 1.15 / 2.1 0.21.0 0.21.3
0.21.0 2.17.0 0.15.0 1.15 / 2.1 0.21.0 0.21.0
0.15.0 2.16.0 0.14.0 1.15 / 2.0 0.15.0 0.15.0
0.14.0 2.14.0 0.14.0 1.14 0.14.0 n/a
0.13.0 2.11.0 n/a 1.13 0.12.1 n/a
0.12.0 2.10.0 n/a 1.12 0.12.0 n/a
0.11.0 2.8.0 n/a 1.11 0.9.0 n/a
0.9.0 2.6.0 n/a 1.9 0.9.0 n/a
0.8.0 2.5.0 n/a 1.8 n/a n/a
0.6.0 2.4.0 n/a 1.6 n/a n/a
0.5.0 2.3.0 n/a 1.5 n/a n/a
0.4.0 2.2.0 n/a 1.4 n/a n/a
0.3.1 2.1.1 n/a 1.3 n/a n/a
0.3.0 2.1.1 n/a 1.3 n/a n/a
0.1.10 2.0.0 n/a 1.0 n/a n/a

问题

有关使用 tf.Transform 的任何问题,请使用 tensorflow-transform 标签在 Stack Overflow 上提问。