【发布时间】:2018-03-10 18:04:29
【问题描述】:
通常要使用 TF 图,必须将原始数据转换为数值。我将此过程称为预处理步骤。例如,如果原始数据是一个句子,一种方法是对句子进行标记并将每个单词映射到一个唯一的数字。这种预处理为每个句子创建了一个数字序列,这将是模型的输入。
我们还需要对模型的输出进行后处理以对其进行解释。例如,将模型生成的数字序列转换为单词,然后构建一个句子。
TF Serving 是 Google 最近推出的一项新技术,用于服务于 TF 模型。我的问题是:
当使用 TensorFlow 服务为 TF 模型提供服务时,应该在哪里执行预处理和后处理?
我是否应该在我的 TF Graph 中封装预处理和后处理步骤(例如,使用 py_fun 或 map_fn)或者还有其他我不知道的 TensorFlow 技术。
【问题讨论】:
-
py_fun 不能成为here 中提到的解决方案: tf.py_func() 操作具有以下已知限制: 函数体(即 func)不会在 GraphDef 中序列化。因此,如果您需要序列化模型并在不同的环境中恢复,则不应使用此功能。
-
你解决过这个问题吗?
tf.transform似乎还不能支持复杂的标记化。 -
据我了解,没有简单的方法来处理这个问题。理想情况下,您希望使用 Tensorflow 操作(或添加必要的操作)来实现预处理/后处理步骤,并使用 tf.transform 将这些操作与您的 TF 图一起发送。但是,正如您可能猜到的那样,添加新的 TF OP 并不是一项简单的任务,这为实现预处理/后处理步骤增加了很多限制。当然,您总是可以在图之外进行前/后处理,但这不是一个理想的解决方案。
-
这是我现在使用 tensorflow-serving 的第一个问题。我在 tensorflow-serving 中就这个话题做了一个issue。
标签: tensorflow tensorflow-serving