我有一个经过训练的模型,我试图通过Docker容器中的tensorflow服务部署一个图像分类器。当我运行Python代码通过REST请求时,我得到了一个404响应。请求看起来是这样的:
json_response = requests.post('http://localhost:8501/models/model_name:predict', data=data)
json_response.raise_for_status()
prediction = json_response.json()['predictions'][0]
print(prediction)
在使用curl检查模型信息时,我得到以下响应:
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
</BODY></HTML>
我遵循了tensorflow网站上关于使用docker的说明,在安装过程中没有出现任何错误。
我相信这可能与我保存模型的方式有关,因为tf_serving指南中的示例可以工作,但我使用了tensorflow上概述的SavedModel格式,其代码如下:
tmpdir = tempfile.mkdtemp()
save_path = os.path.join(tmpdir, "model_name/1/")
print(list(model.signatures.keys())) # ["serving_default"]
infer = model.signatures["serving_default"] # 5 classes
print(infer.structured_outputs)
tf.saved_model.save(model, save_path)
前面代码的print语句:
['serving_default']
{'dense_2': TensorSpec(shape=(None, 5), dtype=tf.float32, name='dense_2')}
在tensorflow SavedModel指南中,它显示了名为“predictions”的结构化输出,这可能是问题的一部分。
作为参考,我正在使用来自冻结的MobileNetV2的迁移学习,并添加了一些层。
我对Tensorflow和Tensorflow Serving都很陌生,所以如果这是我可能错过的一个简单问题,请原谅我。
1条答案
按热度按时间0md85ypi1#
你是如何开始你的服务的?确保你的帖子请求中的模型名称与模型配置中的名称相同。