
My first artificial neural networks project, which utilizes simple perceptrons in order to detect pixelated digits.
The user first clicks the 'train' button, then the program will interactively detect the image from the left hand side as the user clicks it to light pixels.
The GUI library used is
DFL.

A more complex program utilizing perceptrons. It takes the input image from the left (which can be loaded from a predefined directory by clicking the '<>' button) and outputs a remembered version of this image.
In order to train the perceptrons, click the 'train' or '+' button.
Download dependencies

This one is similar to the perceptron-based autoassociator, but internally, a Hopfield network is used to auto-associate images. Hopfield networks give really good results on data in which 0's occur more or less as often as 1's. Thus the sample images are well-balanced according to this criteria.
Download dependencies

Drag and drop an image on the executable and it will reduce its colors to the number defined in config.cfg (64 by default).
A Kohonnen network arranged in a chain in which RGB triplets are the vertices is used to find the relevant colors in the input image. The result is drawn to the screen.
The algorithm was inspired by the NeuQuant quantizer and its accompanying paper.
Download dependencies

This program uses a back-propagation network to predict the paddle position in a game of PONG.
The input is a vector consisting of the ball's position and current direction. The network outputs a single scalar value - the vertical paddle position.
Warning: this program doesn't employ any timing techiques, so edit the first field in config.cfg if the game runs too fast or too slow.
Download dependencies

The program first reads sample images and treats each one as a vector of light intensities. It then finds principal components in these vectors. It then reads the file that was drag'n'dropped on the executable and represents the image in the base of principal components.
The first two rows contain the loaded images. Then come the principal components (red - negative values). The fourth row contains the original image to the left and the one represented in the new basis to the right. The last row contains scaled principal components as used in the generated image.
Download dependencies