October 1st 2014 / 10:00 am / HPZ F


Ludger Hovestadt Jorge Orozco Nikola Marincic
David Schildberger Stig Anton Nielsen Dennis Lagemann
Li Li Salva Keynezhad Mohamed Zaghloul
Jinhyuk Choi Diana Alvarez Miro Roman
Vahid Moosavi Mathias Bernhard Poltak Pandjaitan


Basic library SOMDemo taken from ai-junkie.com, rewritten completely in Java.

Clone it on github: https://github.com/worbit/SOMbieLib

Class schema:

  • package som
    • SombieLattice
      • grid of SombieNodes, 1D, 2D, torus
    • SombieUMatrix
      • contains distances of each SombieNode to right and bottom neighbor
    • SombieNode
      • has an instance of SombieVector representing weights
    • SombieVector
      • extends java.util.Vector, n dimensions, distance metrics
    • SombieSample
      • has a SombieVector for the weights and a label (String)
    • SombieTrainer
      • handles training parameters and adjusts weights in SombieLattice
  • package app
    • SombieApplet (PApplet)
      • references SombieTrainer
      • loads training samples
      • renders SOM



  • 864 fonts in total
  • 26 letters (A-Z)
  • 12 x 12 pixel gray scale image
  • 144 dimensions
  • 5 fonts selected to train a SOM with 32 x 18 nodes

The different fonts the map is trained with can be regarded as the phenotypes. The centers of the clusters reveal then the genotypes of the characters. In between the centers, the SOM generates smooth gradient morphings.

Character Recognition

Same Input as above, SOM with 10*10 nodes trained over 500 iterations.

character recognition

1-dimensional SOM

500 nodes, 800 samples, 2 dimensions
o SOM edges
o training samples
o distance from training vector to BMU


Focus not on the training of the SOM itself but on curating the features.
Feature Learning

Feature Learning

Frequency Domain



Cosine distance / cosine similarity.

returns 1 for same direction (maximal similarity)
returns 0 for perpendicular direction
returns -1 for opposite directin (maximal dissimilarity)

Or clone it on GitHub.


Machine Learning by Andrew Ng (Stanford University)

Mining Massive Datasets by Leskovec/Rajaraman/Ullman (Stanford University)


see here