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)의 일부 구조를 정의한 볼 수 있듯이.

마찬가지로 모델을 여러 번 맞추고 학습 알고리즘의 레이어 매개 변수를 수동으로 변경해야합니다.

내가 원하는 것은 CrossValidator (ParamMap에서 주석 처리 된 행)에 전달하는 ParamMap에 다른 아키텍처를 제공하는 것입니다.

layers() 메서드는 ParamGridBuilder에 알려져 있지만 제공된 인수는 허용하지 않으므로이 beeing이 가능하다고 생각합니다.

내가이 가정에서 맞다면 내가 뭘 잘못하고 어떻게 이것을 의도 한대로 작동시킬 수 있습니까?

답변

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

나는 다음과 같은 공식을 사용하여 끝났다.