tensorflow_serving 分类、预测和回归 SignatureDefs 之间的区别是什么

What's are the differences between tensorflow_serving classification, predict and regression SignatureDefs

我正在尝试在 tensorflow 服务中为 tensorflow 对象检测 api 模型提供服务,我对 3 个不同的 SignatureDef 感到困惑。有什么区别,什么时候选择一个而不是另一个?

https://github.com/tensorflow/serving/issues/599

分类 API 比预测 API 更高级、更具体。 Classify 接受 tensorflow.serving.Input(包含 tf.Examples 的列表)作为输入,并生成 类 和分数作为输出。它用于分类问题。另一方面,Predict 接受张量作为输入和输出张量。可用于回归、分类等类型的推理问题。

Tensorflow Serving 使用不同的方式更新模型权重,并在服务中使用不同的签名机制。为了在服务中保存模型,se 使用 SavedModel。 SavedModel 提供了一种语言中立的格式来保存可恢复和密封的机器学习模型。它使更高级别的系统和工具能够生成、使用和转换 TensorFlow 模型。

这支持 SignatureDefs 用于推理任务的图通常具有一组输入和输出。这称为签名。 SavedModel 使用 SignatureDefs 允许对可能需要与图形一起保存的签名提供通用支持。

对于之前使用过 TF-Exporter/SessionBundle 的用户,TF-Exporter 中的签名将被 SavedModel 中的 SignatureDefs 取代。

SignatureDef 需要规范: 输入作为字符串映射到 TensorInfo。 作为字符串映射输出到 TensorInfo。 method_name(对应加载中支持的方法名tool/system)。

Classification SignatureDefs 支持对 TensorFlow Serving 分类的结构化调用 API。这些规定必须有一个输入张量,并且有两个可选的输出张量:类 和分数,其中至少一个必须存在。

Predict SignatureDefs 支持调用 TensorFlow Serving 的 Predict API。这些签名允许您灵活地支持任意多的输入和输出张量。对于下面的示例,签名 my_prediction_signature 具有单个逻辑输入张量图像,映射到图表中的实际张量 x:0。

Regression SignatureDefs 支持对 TensorFlow Serving 的 Regression 的结构化调用 API。这些规定必须恰好有一个输入Tensor,一个输出Tensor。

请参考:

https://www.tensorflow.org/serving/signature_defs