这个
ServingInputReceiver
您为模型导出创建的是告诉保存的模型期望序列化
tf.Example
原型而不是你想要分类的原始字符串。
从
the Save and Restore documentation
:
一个典型的模式是推理请求以序列化tf.examples的形式到达,因此serving_input_receiver_fn()创建一个字符串占位符来接收它们。然后,serving_input_receiver_fn()还负责通过向图中添加tf.parse_example op来解析tf.examples。
…
tf.estimator.export.build_parsing_serving_input_receiver_fn实用函数为常见情况提供输入接收器。
所以导出的模型包含
tf.parse_example
希望接收序列化的操作
tf.示例
满足您传递给的特性规范的protos
build_parsing_serving_input_receiver_fn
,也就是说,在你的情况下
序列化示例
有着
sentence
特色。要使用模型进行预测,必须提供那些序列化的原型。
幸运的是,tensorflow使得构建这些非常容易。这里有一个可能的函数返回一个表达式
examples
输入一批字符串的密钥,然后可以将其传递给cli:
import tensorflow as tf
def serialize_example_string(strings):
serialized_examples = []
for s in strings:
try:
value = [bytes(s, "utf-8")]
except TypeError: # python 2
value = [bytes(s)]
example = tf.train.Example(
features=tf.train.Features(
feature={
"sentence": tf.train.Feature(bytes_list=tf.train.BytesList(value=value))
}
)
)
serialized_examples.append(example.SerializeToString())
return "examples=" + repr(serialized_examples).replace("'", "\"")
因此,使用从示例中提取的一些字符串:
strings = ["klassifiziere mich bitte",
"Das Paket âS Line Competitionâ umfasst unter anderem optische Details, eine neue Farbe (Turboblau), 19-Zöller und LED-Lampen.",
"(pro Stimme geht 1 Euro Spende von Pfuscher ans Forum) ah du sack, also so gehts ja net :D:D:D"]
print (serialize_example_string(strings))
cli命令将是:
saved_model_cli run --dir /path/to/model --tag_set serve --signature_def predict --input_exprs='examples=[b"\n*\n(\n\x08sentence\x12\x1c\n\x1a\n\x18klassifiziere mich bitte", b"\n\x98\x01\n\x95\x01\n\x08sentence\x12\x88\x01\n\x85\x01\n\x82\x01Das Paket \xe2\x80\x9eS Line Competition\xe2\x80\x9c umfasst unter anderem optische Details, eine neue Farbe (Turboblau), 19-Z\xc3\xb6ller und LED-Lampen.", b"\np\nn\n\x08sentence\x12b\n`\n^(pro Stimme geht 1 Euro Spende von Pfuscher ans Forum) ah du sack, also so gehts ja net :D:D:D"]'
这会给你想要的结果:
Result for output key class_ids:
[[0]
[1]
[0]]
Result for output key classes:
[[b'0']
[b'1']
[b'0']]
Result for output key logistic:
[[0.05852016]
[0.88453305]
[0.04373989]]
Result for output key logits:
[[-2.7780817]
[ 2.0360758]
[-3.0847695]]
Result for output key probabilities:
[[0.94147986 0.05852016]
[0.11546692 0.88453305]
[0.9562601 0.04373989]]