2

1 つのエンジンと複数のアルゴリズムに行き詰まっており、さらに助けが必要です。

1 つのエンジンと 2 つのアルゴリズムがあります。AL1 と AL2 を呼び出しましょう。2 つのアルゴリズム scala ファイルを持つ src/main/scala では、AL1Algorithm.scala と AL2Algorithm.scala という名前が付けられ、各アルゴリズムには独自のパラメーターとモデルがあります (AL1 の場合は AL1AlgorithmParams と AL1Model、AL2 の場合は AL2AlgorithmParams と AL2Model)。したがって、2 つの train 関数と 2 つの predict 関数があります。

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
      }
    }

私の質問は、1 つの send_query に対して 2 つのアルゴリズムを呼び出すことができるか、engine.json の代わりに send_query で呼び出す必要があるアルゴリズムを区別する方法です。ここには奇妙な点があります。私の設定に問題があると思います。Serving.scala は 2 つのアルゴリズムの結果を同時に生成しますか。サービングで各アルゴリズムの結果を分割できますか?

どうもありがとうございました

4

1 に答える 1

0

Serving.scala の serve() 関数も変更する必要があります。serve() 関数には 2 つの引数があります。下記参照

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

クエリは両方のアルゴリズムに送信され、両方のアルゴリズムから返された が関数 asPredictedResultに渡されます。順序は、 で定義されているアルゴリズムの順序と同じです。アルゴリズムによってすべての出力を利用するには、これを変更する必要があります。テンプレートの例の中には、デフォルトで最初の結果のみを取得するものがあります ( )serve()Seq[PredictedResult]Seq[]engine.jsonPredictedResultpredictedResults.head

例として、このドキュメントの「ステップ 4. 複数のアルゴリズムの出力を組み合わせるためにサービングを変更する」も参照してください。

于 2015-09-17T07:16:36.213 に答える