Flat networks have been added to Java
Needs a bit more refinement, then will be ported to C#. This is basically for GPU acceleration.
Encog, like just about any OOP based neural library creates a number of classes to represent layers and connections between those layers. The flat network is basically just a feedforward neural network, the typical multilayer perceptron, which seems to be one of the most popular network types with Encog. However, I take this network type and flatten it down to a 1D array of doubles. No layer objects, no synapses. No 2d matrix. Everything represented in 1d arrays, with an RPROP trainer. Really quite primitive. But thats the idea, and it produces the same output as the regular OOP based neural networks.
I will now take my "flat" RPROP trainer for this network and translate it into OpenCL. Then I will be able to throw my computer's quadcore and GPU at training and see how fast it is. I suspect that it is going to be very fast. It will take me a few weeks to get this refined. But this is how Encog GPU acceleration is going to work. At least initially.
The classes I just checked in provide a flat network trained with backprop. I will extend this to RPROP next and continue from there!



