Recasting Java neural networks in Python

Many neural network applications implemented in Java, such as Neuroph, Encog and Joone, may look rather different when switching from the Java language to Python with the help of the DMelt computing environment. First of all, they look simpler. You can use your favorite Python tricks to load and display data. The Python coding is simpler for viewing and fast modifications. It does not require recompiling after each change. At the same time, the platform independence and multi-threading environment are guaranteed by the Java Virtual Machine.

As a simple example, consider Joone, the Java Object Oriented Neural Network. It is well-tested open source project that offers a highly adaptable neural networks for Java programmers. For the purposes of this blog, we will teach Joone to recognize a very simple pattern, such as XOR. The XOR operation’s truth table is summarized as

[[0.0, 0.0, 0.0],[0.0, 1.0, 1.0],[1.0, 0.0, 1.0],[1.0, 1.0, 0.0]]

where three first two columns are inputs, and the last column is the output. Now let us put together a simple Python code that uses Joone’s Java API: here
We assume that the neural network uses two input layers, one hidden (with 3 neurons), and one output layer (with one neuron). Now, start the DMelt program, and run this code in its editor. If you are using Mac/Linux, you can run this code in a batch mode with the command “dmelt_batch.sh code.py”.You will see how the global error changes as a function of epoch.

Joone can be used for rather sophisticated tasks that involve future predictions. A popular example using Python calling Joone library deals with forecast in time series. For this task, we generate a time series in the form cos(x)*sin(x), add nose, and use this as input for our neural network training. This trend is shown here.

See more neural network examples implemented in Python/Jython and Java in DMelt Neural Network code examples.