0

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に認識されているようだが、提供された引数は受け入れられないため、これは可能と思われる。

私がこの前提に正しければ、私は何を間違っていますか、これをどのようにして意図どおりに動作させることができますか?

答えて

0

コードを見ると構文的に正しいと思われます。 コンピュータではかなり高価なので、動作していないのはバグか意図している可能性があります。だから私は、あなたはそれのためのCVを使用することはできませんね。

Number of units in hidden-layer = ceil((Number of inputs + outputs) * (2/3)) 

出典:http://www.faqs.org/faqs/ai-faq/neural-nets/part3/section-10.html

は、私は、次の式を使用して終了しました。

関連する問題