Python Neural Net Visualizer

clear
Guess: ?
key:
neurons synapses
strong activation positive activation
zero activation negative activation
<opacity> activation strength

About:

This is a visualization of a neural net that classifies human handwritten digits (0-9). Training was implemented in Python and classification in Javascript so it can run in-browser. It's a vanilla deep(ish) feedforward neural network whith two hidden layers of 256 nuerons. It was trained on the EMNIST handwriten digits dataset.

The pixelated box on the top right is the actual raw input that's fed into the network. The network was only trained to accept a 20x20 pixel image, so the original input has to be scaled down. In addition to scaling the input data is centered on its centroid. This way a '7' drawn off-center or much smaller will still be recognized just as well as a well centered large '7'. This pre-processing was also applied to all the training data in exactly the same way.

In the visualization, neuron layers are drawn as vertical stacks of thin rectangles, and synapse activation values as connecting lines. See the key above for what the colors mean. Synapse activations are filled in gradually to save processing time, since drawing 30k lines all at once is pretty slow in javascript.

View more info and source code on github.