首页 > 解决方案 > 无法在转换组件 (TFX) 中使用句子嵌入

问题描述

我正在使用列是数字或分类的评论数据集。最后一列是文本评论(英文句子段落),所以我使用通用句子编码器(https://tfhub.dev/google/universal-sentence-encoder/4)来获得句子嵌入。该项目的目标是为每个评论示例分配一个情感标签。对于 TF (2.0) Keras 模型,所有这些都相对简单。

但我无法弄清楚如何让它在 TFX 管道中工作。具体来说,在尝试使用预训练嵌入模型时,我无法弄清楚如何同时使用 ExampleGen 和 Transform 组件。示例 gen 组件被输入原始数据,因此 transform 组件最终会获得评论文本的稀疏张量。但这是我想使用通用句子编码器并获取句子嵌入张量的地方(编码器接受一个字符串、字符串列表或字符串渴望张量列表来生成嵌入)。评论文本是情感分类的主要部分,所以本质上,我无法进一步进行。

我可以做两件事:

  1. preprocessing_fn变换组件中,以某种方式将评论稀疏张量转换为字符串张量,然后可以将其输入通用句子编码器模型。我已经尝试过了,但遇到了急切的执行问题(“张量”对象没有属性“numpy”错误)。
  2. 丢弃 ExampleGen 组件,改用 Apache Beam + Tensorflow Transform 来获取数据,执行必要的转换,然后让 Trainer 组件从这里(我还不确定这部分)获取数据,然后是 Evaluator、Pusher 等。但这感觉需要更多的努力,我想了解在我走这条路之前是否有我遗漏的技巧。

我对 TF 比较陌生,所以对此的任何帮助将不胜感激,谢谢!

编辑:我确实发现此链接讨论了类似的内容(https://github.com/tensorflow/tfx/issues/2517),但也无法从中得出任何具体的信息。

标签: tensorflow2.0tfxtensorflow-transform

解决方案


推荐阅读