不同类型的TensorFlow SignatureDefs的目的是什么?

问题描述 投票:2回答:2

似乎Predict SignatureDef包含Classification和Regression SignatureDefs的所有功能。何时使用分类或回归SignatureDefs而不是仅仅使用Predict来获取所有内容?我们希望在我们的生产环境中保持复杂性,如果在所有情况下都可以使用Predict SignatureDefs,那么这似乎是个好主意。

python tensorflow tensorflow-serving
2个回答
1
投票

从我在文档(https://www.tensorflow.org/serving/signature_defs)上看到的,似乎“Classify”和“Regress”SigDefs试图为简单的情况(分类和回归)强制一个简单而一致的界面,分别是“输入” - >“类” +得分“和”输入“ - >”输出“。似乎还有一个额外的好处,即“分类”和“回归”SigDefs不需要将服务函数构造为模型导出函数的一部分。

同样来自文档,似乎Predict SigDef允许更通用的界面,其优点是能够交换模型。来自文档:

预测SignatureDefs支持跨模型的可移植性。这意味着您可以交换不同的SavedModel,可能使用不同的基础Tensor名称(例如,而不是x:0,或许你有一个新的替代模型,Tensor z:0),而你的客户可以不断在线查询旧的和新的此模型的版本没有客户端更改。

预测SignatureDefs还允许您向输出添加可选的附加张量,您可以显式查询。假设除了得分以下的输出键之外,您还想获取用于调试或其他目的的池化层。

然而,文档没有解释,除了不必输出服务函数的微小好处之外,为什么人们不会只使用Predict SigDef用于所有内容,因为它似乎是一个有很多上升空间的超集。我很想看到一个明确的答案,因为专业功能(分类,回归)的好处似乎很少。


0
投票

到目前为止我看到的差异是......

1)如果在DNNClassifier模型中使用包含tf.feature_column.categorical_column_with_vocabulary_ *的tf.feature_column.indicator_column,当​​你查询tensorflow server时,我遇到了Predict API的问题,有时无法解析/映射字符串输入。词汇表文件/列表。另一方面,Classify API将字符串正确映射到词汇表中的索引(categorical_column),然后映射到one-hot / multi-hot(indicator_column),并提供(似乎是)正确的分类响应。查询。

2)Classify API的[[class,score],[class,score],....]的响应格式与Predict API的[class [],score []]的响应格式。如果您需要以某种方式解析数据,则可能更喜欢其中一个。

TLDR;将indicator_column包装在categorical_column_with_vocabulary_ *中,我在使用Predict API时遇到了词汇表映射的问题。所以,使用Classify API。

© www.soinside.com 2019 - 2024. All rights reserved.