您的解决方案 3,
“使用标准的 Tensorflow Modelserver 为模型提供服务,并构建一个后处理服务来重组和过滤结果。”
应该是最好的。
链接和代码片段:如果我们考虑使用 TF Serving 的 MNIST 示例,Saved Model 的链接是,https://github.com/tensorflow/serving/blob/87e32bb386f156fe208df633c1a7f489b57464e1/tensorflow_serving/example/mnist_saved_model.py,
客户端代码的链接是https://github.com/tensorflow/serving/blob/87e32bb386f156fe208df633c1a7f489b57464e1/tensorflow_serving/example/mnist_client.py。
如果我们想要 top-n 预测的值,我们可以_create_rpc_callback
在客户端文件中调整函数的代码,如下所示。
def _create_rpc_callback(label, result_counter):
"""Creates RPC callback function.
Args:
label: The correct label for the predicted example.
result_counter: Counter for the prediction result.
Returns:
The callback function.
"""
def _callback(result_future):
"""Callback function.
Calculates the statistics for the prediction result.
Args:
result_future: Result future of the RPC.
"""
exception = result_future.exception()
if exception:
result_counter.inc_error()
print(exception)
else:
sys.stdout.write('.')
sys.stdout.flush()
response = numpy.array(result_future.result().outputs['scores'].float_val)
print('Top 4 responses = ', response[0:4])
最后一行的print
语句将打印 Top-4 Predictions。