如何解决Tensorflow 为分类器提供 SignatureDefs
我按照以下步骤训练了一个 BERT 文本分类器,其中包含自己的文本和一些修改:
https://www.tensorflow.org/tutorials/text/classify_text_with_bert
导出模型并使用 Tensorflow Serve 运行它效果很好:
https://www.tensorflow.org/tfx/serving/docker
不幸的是,我无法真正弄清楚如何为分类器定义 SignatureDefs,从而定义 Tensorflow Serve 的分类器端点。 :predict
端点运行良好,似乎是默认签名。
显然,我必须在保存模型时定义签名。由于该主题的文档不是很详尽,我不确定如何定义分类器签名。
https://www.tensorflow.org/tfx/serving/signature_defs
在上面的 BERT 示例中,serving_results
只是使用 reloaded_model
定义 tf.constant(examples)
并使用 serving_results = tf.sigmoid(serving_results['classifier')]
实例化它。
因此,我假设在调用 classifier
方法时,我必须将激活函数和 model.save
签名作为参数提供。
predict
端点有效,classify
端点给出错误:
{"error": "No classification inputs found in SignatureDef: inputs {\n key: \"text\"\n value {\n name: \"serving_default_text:0\"\n dtype: DT_STRING\n tensor_shape {\n dim {\n size: -1\n }\n }\n }\n}\noutputs {\n key: \"classifier\"\n value {\n name: \"StatefulPartitionedCall_2:0\"\n dtype: DT_FLOAT\n tensor_shape {\n dim {\n size: -1\n }\n dim {\n size: 1\n }\n }\n }\n}\nmethod_name: \"tensorflow/serving/predict\"\n"}
如果有任何提示,我将不胜感激。
解决方法
可以在此处找到定义签名的正确文档。
https://www.tensorflow.org/tfx/serving/serving_basic?hl=en
builder.add_meta_graph_and_variables(
sess,[tf.compat.v1.saved_model.tag_constants.SERVING],signature_def_map={
'predict_images':
prediction_signature,tf.compat.v1.saved_model.signature_constants
.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
classification_signature,},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。