Apache Sparkの多層パーセプトロンに最適なアーキテクチャを決定しようとしていますが、クロスバリデーションを使用できるかどうかは疑問です。Apache Sparkの多層パーセプトロンのネットワークアーキテクチャを選択するためのクロスバリデーションの使用
いくつかのコード:
// define layers
int[] layers = new int[] {784, 78, 35, 10};
int[] layers2 = new int[] {784, 28, 28, 10};
int[] layers3 = new int[] {784, 84, 10};
int[] layers4 = new int[] {784, 392, 171, 78, 10};
MultilayerPerceptronClassifier mlp = new MultilayerPerceptronClassifier()
.setMaxIter(25)
.setLayers(layers4);
ParamMap[] paramGrid = new ParamGridBuilder()
.addGrid(mlp.seed(), new long[] {895L, 12345L})
//.addGrid(mlp.layers(), new int[][] {layers, layers2, layers3})
.build();
CrossValidator cv = new CrossValidator()
.setEstimator(mlp)
.setEvaluator(new MulticlassClassificationEvaluator())
.setEstimatorParamMaps(paramGrid).setNumFolds(10);
CrossValidatorModel model = cv.fit(train);
あなたは私が整数配列(層-layers4)でいくつかのアーキテクチャを定義した見ることができるように。
私は、学習アルゴリズムのレイヤパラメータを手動で変更して、モデルを複数回適合させる必要があります。
私が望むのは、ParamMapに異なるアーキテクチャを提供し、CrossValidator(ParamMapのコメントアウトされた行)に渡すことです。
layers()メソッドがParamGridBuilderに認識されているようだが、提供された引数は受け入れられないため、これは可能と思われる。
私がこの前提に正しければ、私は何を間違っていますか、これをどのようにして意図どおりに動作させることができますか?