2

我被一个引擎和多种算法困住了,需要进一步的帮助。

我有一个引擎和两个算法,我们称之为 AL1 和 AL2。在 src/main/scala 中有 2 个算法 scala 文件,名称为 AL1Algorithm.scala 和 AL2Algorithm.scala,每个算法都有自己的参数和模型(AL1AlgorithmParams 和 AL1Model 用于 AL1,AL2AlgorithmParams 和 AL2Model 用于 AL2)。因此有 2 个训练函数和 2 个预测函数。

我可以通过调用 pio train 来训练 2 种算法。当我调用 send_query 进行测试时,程序总是返回我放在 engine.json 文件顶部的算法的结果

例如,如果我将 AL1Algorithm 放在顶部,send_query 将运行 AL1Algorithm

"algorithms": [
    {
      "name": "AL1Algorithm",
      "params": {
        "n": 100
      }
    },
    {
      "name": "AL2Algorithm",
      "params": {
        "n": 100
      }
    }

如果我将 AL2Algorithm 放在顶部,send_query 将运行 AL2Algorithm'

"algorithms": [
    {
      "name": "AL2Algorithm",
      "params": {
        "n": 100
      }
    },
    {
      "name": "AL1Algorithm",
      "params": {
        "n": 100
      }
    }

我的问题是,我可以为一个 send_query 调用 2 个算法,如何区分应该在 send_query 而不是 engine.json 中调用哪个算法。这里有些奇怪,我认为我的配置有问题。Serving.scala 会同时产生 2 个算法的结果。我可以在服务中拆分每个算法的结果吗?

非常感谢

4

1 回答 1

0

您还需要修改 Serving.scala 中的 serve() 函数。serve() 函数有 2 个参数。见下文

def serve(query: Query,
   predictedResults: Seq[PredictedResult]): PredictedResult

查询被发送到两种算法,两种算法的PredictedResult返回值都被传递给serve()函数 as Seq[PredictedResult]。顺序与中定义的Seq[]算法顺序相同engine.json。您需要修改它以利用PredictedResult算法的所有输出。一些模板示例默认只取第一个结果 ( predictedResults.head)

另请参阅本文档中的“步骤 4。修改服务以组合多个算法的输出”作为示例。

于 2015-09-17T07:16:36.213 回答