映射到标签的 Tensorflow 服务预测
Tensorflow Serving predictions mapped to labels
我正在使用 TensorFlow 服务提供初始模型。我在 Azure Kubernetes 上执行此操作,而不是通过更标准且有据可查的 google 云。
无论如何,这一切都有效,但我感到困惑的一点是预测以浮点数组的形式返回。这些值映射到训练期间传入的原始标签,但如果没有原始标签文件,则无法对每个概率相关的内容进行逆向工程。
在我开始服务之前,我只是简单地使用一个推理脚本,然后交叉引用我在训练时与冻结模型一起存储的标签文件。但是服务这行不通。
所以我的问题是如何获得与模型关联的标签并理想地获得对 return 标签和概率的预测?
我确信有一种方法可以使用各种 TF 操作直接为此 return 映射,但是我已经设法至少将标签打包到模型中并 return 它们在预测和概率。
我所做的是从标签数组创建一个 tf.constant,然后将该张量添加到 tf.saved_model.signature_def_utils.build_signature_def
中的输出张量数组
现在,当我得到一个预测时,我得到了浮点数组和一个标签数组,我可以在客户端匹配它们。
我尝试了@user1371314 建议的方法,但我无法让它工作。另一个可行的解决方案是创建张量(而不是常量)并在保存模型时仅将其映射到输出层的第一个元素。当你把它放在一起时,它看起来像这样:
# get labels names and create a tensor from it
....
label_names_tensor = tf.convert_to_tensor(label_names)
# save the model and map the labels to the output layer
tf.saved_model.simple_save(
sess,
"./saved_models",
inputs={'image': model.input},
outputs={'label' : label_names_tensor,'prediction': model.output[0]})
当您在服务模型后进行预测时,您将得到以下结果:
{
"predictions": [
{
"label": "label-name",
"prediction": 0.114107
},
{
"label": "label-name",
"prediction": 0.288598
},
{
"label": "label-name",
"prediction": 0.17436
},
{
"label": "label-name",
"prediction": 0.186366
},
{
"label": "label-name",
"prediction": 0.236568
}
]
我正在使用 TensorFlow 服务提供初始模型。我在 Azure Kubernetes 上执行此操作,而不是通过更标准且有据可查的 google 云。
无论如何,这一切都有效,但我感到困惑的一点是预测以浮点数组的形式返回。这些值映射到训练期间传入的原始标签,但如果没有原始标签文件,则无法对每个概率相关的内容进行逆向工程。
在我开始服务之前,我只是简单地使用一个推理脚本,然后交叉引用我在训练时与冻结模型一起存储的标签文件。但是服务这行不通。
所以我的问题是如何获得与模型关联的标签并理想地获得对 return 标签和概率的预测?
我确信有一种方法可以使用各种 TF 操作直接为此 return 映射,但是我已经设法至少将标签打包到模型中并 return 它们在预测和概率。
我所做的是从标签数组创建一个 tf.constant,然后将该张量添加到 tf.saved_model.signature_def_utils.build_signature_def
中的输出张量数组现在,当我得到一个预测时,我得到了浮点数组和一个标签数组,我可以在客户端匹配它们。
我尝试了@user1371314 建议的方法,但我无法让它工作。另一个可行的解决方案是创建张量(而不是常量)并在保存模型时仅将其映射到输出层的第一个元素。当你把它放在一起时,它看起来像这样:
# get labels names and create a tensor from it
....
label_names_tensor = tf.convert_to_tensor(label_names)
# save the model and map the labels to the output layer
tf.saved_model.simple_save(
sess,
"./saved_models",
inputs={'image': model.input},
outputs={'label' : label_names_tensor,'prediction': model.output[0]})
当您在服务模型后进行预测时,您将得到以下结果:
{
"predictions": [
{
"label": "label-name",
"prediction": 0.114107
},
{
"label": "label-name",
"prediction": 0.288598
},
{
"label": "label-name",
"prediction": 0.17436
},
{
"label": "label-name",
"prediction": 0.186366
},
{
"label": "label-name",
"prediction": 0.236568
}
]