HyperNEAT 네트워크를 사용하여 시계열 예측에 Encog AI 프레임 워크를 사용하고 있습니다.Encog가있는 시계열 예측을위한 HyperNEAT 네트워크가 필요합니다
다음은 네트워크를 만드는 데 사용하는 간단한 코드입니다. 그것은 상자에서 찍은
Substrate substrate = SubstrateFactory.factorSandwichSubstrate(columns*windowSize,days);
CalculateScore score = new TrainingSetScore(trainingSet);
NEATPopulation pop = new NEATPopulation(substrate, 500);
pop.setActivationCycles(4);
pop.reset();
EvolutionaryAlgorithm train = NEATUtil.constructNEATTrainer(pop, score);
OriginalNEATSpeciation speciation = new OriginalNEATSpeciation();
speciation.setCompatibilityThreshold(1);
train.setSpeciation(speciation = new OriginalNEATSpeciation());
System.out.println("Is HyperNEAT "+pop.isHyperNEAT());
// train the neural network
int epoch = 1;
do {
train.iteration();
if(writeOnStdOut)
System.out.println("Epoch #" + epoch + " Error:" + train.getError());
epoch++;
if(Math.abs(train.getError()-previousError)<0.000000001) iterationWithoutImprovement++; else iterationWithoutImprovement = 0;
previousError = train.getError();
Date dtemp = new Date();
} while(train.getError() > maximumAcceptedErrorTreshold && epoch < maxIterations && iterationWithoutImprovement < maxiter);
NEATGenome genome = (NEATGenome) pop.getBestGenome();
HyperNEATCODEC codec = new HyperNEATCODEC();
network2 = (NEATNetwork) codec.decode(pop, substrate, genome);
이 https://github.com/encog/encog-java-examples/tree/master/src/main/java/org/encog/examples/neural/neat/boxes 열이 기능의 수이고 windowSize는 미래 가치 예측에 필요한 이전 일 수있다
exampel (내 예를 windowSize 1). 스레드를 처리하는 문제가있는 것 같다
Exception in thread "pool-2-thread-416" java.lang.ArrayIndexOutOfBoundsException at org.encog.util.EngineArray.arrayCopy(EngineArray.java:107) at org.encog.neural.neat.NEATNetwork.compute(NEATNetwork.java:194) at org.encog.util.error.CalculateRegressionError.calculateError(CalculateRegressionError.java:46) at org.encog.neural.networks.training.TrainingSetScore.calculateScore(TrainingSetScore.java:61) at org.encog.ml.ea.score.parallel.ParallelScoreTask.run(ParallelScoreTask.java:83) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
:
나는이 예외를 얻을. 누군가이 문제를 해결하는 데 도움을 줄 수 있습니까? 두 번째 질문은 Encog에서 Backpropagation을 사용하여 NEAT 네트워크를 어떻게 훈련시킬 수 있습니까?
보통, I이 '기판 기판 SubstrateFactory.factorSandwichSubstrate = (컬럼 * windowSize, 일)로 이전 코드를 수정했다. 일수는 예측할 미래 일 수입니다. – vincenzodentamaro