我正在尝试在 tensorflow 服务中提供 tensorflow 对象检测 API 模型,但我对 3 个不同的 SignatureDef 感到困惑。有什么区别,何时选择一种而不是另一种?
最佳答案
Tensorflow Serving 使用不同的方式更新模型权重,并在服务中使用不同的签名机制。为了在服务中保存模型,使用 SavedModel。 SavedModel 提供了一种语言中立的格式来保存可恢复且密封的机器学习模型。它使更高级别的系统和工具能够生成、使用和转换 TensorFlow 模型。
这支持SignatureDefs 用于推理任务的图通常具有一组输入和输出。这称为签名。 SavedModel 使用 SignatureDefs 来为可能需要与图形一起保存的签名提供通用支持。
对于之前使用过 TF-Exporter/SessionBundle 的用户,TF-Exporter 中的 Signature 将替换为 SavedModel 中的 SignatureDef。
SignatureDef 需要规范: 输入作为 TensorInfo 的字符串映射。 输出为 TensorInfo 的字符串映射。 method_name(对应加载工具/系统中支持的方法名称)。
Classification SignatureDefs 支持对 TensorFlow Serving 的 Classification API 进行结构化调用。这些规定必须有一个输入张量,并且有两个可选的输出张量:类别和分数,至少必须存在其中之一。
Predict SignatureDefs 支持调用 TensorFlow Serving 的 Predict API。这些签名允许您灵活支持任意多个输入和输出张量。对于下面的示例,签名 my_prediction_signature 有一个逻辑输入张量图像,该图像映射到图中的实际张量 x:0。
Regression SignatureDefs 支持对 TensorFlow Serving 的 Regression API 进行结构化调用。这些规定必须有一个输入 Tensor,一个输出 Tensor。
请引用:
关于tensorflow-serving - tensorflow_serving 分类、预测和回归 SignatureDefs 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45323781/