jeffheaton / encog-java-core

http://www.heatonresearch.com/encog
Other
742 stars 268 forks source link

EncogError: ArrayIndexOutOfBoundsException #240

Closed exception closed 7 years ago

exception commented 7 years ago

For some reason, this exception is being thrown:

Caused by: java.lang.ArrayIndexOutOfBoundsException
        at java.lang.System.arraycopy(Native Method) ~[?:1.8.0_121]
        at org.encog.util.EngineArray.arrayCopy(EngineArray.java:107) ~[?:?]
        at org.encog.neural.flat.FlatNetwork.compute(FlatNetwork.java:364) ~[?:?]
        at org.encog.neural.networks.training.propagation.GradientWorker.process(GradientWorker.java:203) ~[?:?]
        at org.encog.neural.networks.training.propagation.GradientWorker.run(GradientWorker.java:272) ~[?:?]
        at org.encog.util.concurrency.PoolItem.run(PoolItem.java:59) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:1.8.0_121]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:1.8.0_121]
        ... 1 more

This happens when i use the following code:

MLDataSet set = new BasicMLDataSet(doubles, MachineACCore.get().getPreferred());
Train train = new ResilientPropagation(MachineACCore.get().getNetwork(), set);

int epoch = 1;
do {
   train.iteration();

    System.out.println("Epoch #" + epoch + " Error: " + train.getError());
} while (train.getError() > 0.01);

The prefferred multidimensional array contains the following data: https://gist.githubusercontent.com/erosemberg/2aba103d1255b6dd162f7cec26b8c8f5/raw/772a81a4a7db6bbd8a8250cc05b48b93c4a6a22d/data%2520preferred

And the data being fed to it at that time was the following: https://gist.githubusercontent.com/erosemberg/e81aa9b094812605506a0c2674903a20/raw/5238fb57654dd3dede8f2041b2a827af8fe85ad8/data%2520one%2520time

The network being used looks like the following:

network.addLayer(new BasicLayer(null, true, 3));
network.addLayer(new BasicLayer(new ActivationCompetitive(1), false, 3));
network.getStructure().finalizeStructure();
network.reset();

network being a BasicNetwork.

Could this be an issue with the network not having enough neurons assigned to it?