当使用TensorFlow服务提供TF模型时,应在哪里执行预处理和后处理步骤



通常要使用TF图,必须将原始数据转换为数值值。我将此过程称为预处理步骤。例如,如果原始数据是一个句子,则一种方法是将句子化并映射到每个单词为唯一的数字。此预处理为每个句子创建一个数字序列,这将是模型的输入。

我们还需要后处理模型的输出来解释它。例如,将模型生成的数字序列转换为单词,然后构建句子。

TF Serving是一项新技术,最近由Google推出,以提供TF模型。我的问题是:

使用TensorFlow服务提供TF模型时,应在哪里执行预处理和后处理?

我是否应该在我的TF图中封装预处理和后处理步骤(例如,使用py_fun或map_fn),否则我不知道另一种TensorFlow技术。

我在这里跑过同一问题,即使我还不能100%确定如何使用WordDict变量其IDS),主要的预处理和后处理功能在此处定义:

https://www.tensorflow.org/programmers_guide/saved_model

AS export_outputsserving_input_receiver_fn

  • exports_outputs

如果使用估算器,则需要在EstimatorSpec中定义。这是分类算法

的示例
  predicted_classes = tf.argmax(logits, 1)
  categories_tensor = tf.convert_to_tensor(CATEGORIES, tf.string)
  export_outputs = { "categories": export_output.ClassificationOutput(classes=categories_tensor) }
  if mode == tf.estimator.ModeKeys.PREDICT:
    return tf.estimator.EstimatorSpec(
        mode=mode,
        predictions={
            'class': predicted_classes,
            'prob': tf.nn.softmax(logits)
        },
        export_outputs=export_outputs)
  • serving_input_receiver_fn

在导出训练有素的估算器模型之前,它需要定义它,它假设输入是一个原始字符串并从那里解析输入,您可以编写自己的功能,但是我不确定何时可以使用外部变量。这是分类算法的一个简单示例:

def serving_input_receiver_fn():
    feature_spec = { "words": tf.FixedLenFeature(dtype=tf.int64, shape=[4]) }
    return tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec)()
  export_dir = classifier.export_savedmodel(export_dir_base=args.job_dir,
                                            serving_input_receiver_fn=serving_input_receiver_fn)

希望它有帮助。

相关内容

  • 没有找到相关文章

最新更新