如何使用Google AutoML更改预测阈值?

3

在谷歌自动机器学习中创建模型之后,我们可以使用提供的 Python 代码进行预测。以下是代码:

import sys

from google.cloud import automl_v1beta1
from google.cloud.automl_v1beta1.proto import service_pb2


def get_prediction(content, project_id, model_id):
  prediction_client = automl_v1beta1.PredictionServiceClient()

  name = 'projects/{}/locations/us-central1/models/{}'.format(project_id, model_id)
  payload = {'image': {'image_bytes': content }}
  params = {}
  request = prediction_client.predict(name, payload, params)
  return request  # waits till request is returned

if __name__ == '__main__':
  file_path = sys.argv[1]
  project_id = sys.argv[2]
  model_id = sys.argv[3]

  with open(file_path, 'rb') as ff:
    content = ff.read()

  print get_prediction(content, project_id,  model_id)

我意识到它只会打印出得分高于阈值value = 0.5的检测结果。 示例输出:

payload {
  classification {
    score: 0.562688529491
  }
  display_name: "dog"
}

如何打印出得分低于0.5的其他检测结果(例如将阈值改为0.3)?
1个回答

4

查看API文档此处

参数

具有字符串属性的对象

附加特定于域的参数,任何字符串长度最长为25000个字符。

对于图像分类:

score_threshold - (float) 从0.0到1.0的值。当模型为图像进行预测时,它将仅生成具有至少此置信度阈值的结果。默认值为0.5。

proto中该字段的实际描述是

map<string,string> params;

所以你需要将之前设置的params变量改成一个空字典。将 params 变量改为:params = {"score_threshold": "0.3"} 就可以了。


在 params 变量中。 - West
最好的方法是查看Python的protobuf指南,那里有示例。 - West
好的,我不是很明白,假设我按照你说的将“params”更改为字典,那么接下来该怎么做呢?我应该如何将“params”变量传递给预测函数“request = prediction_client.predict(name, payload, params)”?我应该在哪里定义“score_threshold()”函数? - gameon67
params = {"score_threshold": score_threshold} - West
非常好!感谢您的帮助,我会为您的问题编辑附加信息。 - gameon67
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接