I made a preliminary port of the core neural network code to Java, available
here. It includes only the core logic and math, not the training data structure or example code. I have not been able to test it yet, but as far as I know it should behave identically to the C++ code, although there are probably a few bugs.
I now have a much better understanding of how the network works but I am still confused by a couple of things.
The simplest use case I have to test the use of a neural network is to replace the PID controller that controls the heading of the robot. From what I understand, the input data could be the difference in the current heading from the desired heading, and the target data value would be 0 in that case. The output value would be the rate of rotation of the robot and I would train the network by making the robot rotate to different headings. Does this sound right?
Also, is there any technical/mathematical reason why the network cannot use other transfer functions, or have you just not written that part yet? I was wondering because I am thinking about adding that functionality to my port.
This is probably a little irrelevant, but why do you only set the output value for the bias node of the output layer, not all of the layers?
Sorry for all the questions, but I am really interested in this.