我被一个引擎和多个算法卡住了,需要进一步的帮助。
我有一个引擎和两个算法,让我们调用AL1和AL2。在有两个算法scala文件的src/main/scala中,名为AL1Algorithm.scala和AL2Algorithm.scala的每个算法都有自己的参数和模型( AL1的AL1AlgorithmParams和AL1Model,AL2的AL2AlgorithmParams和AL2Model )。因此,有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调用两个算法吗,如何区分哪个算法应该在send_query中调用,而不是在engine.json中调用。这里有一些奇怪的东西,我想我的配置有问题。Serving.scala会同时产生两种算法的结果吗?我可以在服务中拆分每个算法的结果吗?
非常感谢
发布于 2015-09-17 15:16:36
您还需要修改Serving.scala中的serve()函数。serve()函数有两个参数。见下文
def serve(query: Query,
predictedResults: Seq[PredictedResult]): PredictedResult查询被发送到这两个算法,并且这两个算法返回的PredictedResult作为Seq[PredictedResult]传递给serve()函数。Seq[]顺序与engine.json中定义的算法顺序相同。您需要对其进行修改,以使用算法的所有PredictedResult输出。一些模板示例默认情况下只接受第一个结果(predictedResults.head)
另请参见this doc中的“步骤4.修改服务以组合多个算法的输出”作为示例。
https://stackoverflow.com/questions/32604603
复制相似问题