Ben Graham, University of Warwick, 2013-2015, GPLv3
SparseConvNet is a convolutional neural network for processing sparse data on a variety of lattices, i.e.
(i) the square lattice,
(ii) the triagular lattice,
(iii) the cubic lattice,
(iv) the tetrahedral lattice
(and of course the hyper-cubic and hyper-tetrahedral 4D lattices as well).

Data is sparse if most sites take the value zero. For example, if a loop of string has a knot in it, and you trace the shape of the string in a 3D lattice, most sites will not form part of the knot (left). Applying a 2x2x2 convolution (middle), and a pooling operation (right), the set of non-zero sites stays fairly small:

This can be used to analyse 3D models, or space-time paths. Here are some examples from a 3D object dataset. The insides are hollow, so the data is fairly sparse. The computation complexity of processing the models is related to the fractal dimension of the underlying objects.
Top row: four exemplars of snakes. Bottom row: an ant, an elephant, a robot and a tortoise.
- Put the CIFAR-10 data files in the Data/CIFAR10/ folder
- Execute "make cifar10 && cifar10"
- An Nvidia CUDA sm_20 capable graphics card
- The CUDA SDK
- Google sparsehash library
- The Armadillo library
i.e.
sudo apt-get install libarmadillo-dev
wget https://sparsehash.googlecode.com/files/sparsehash_2.0.2-1_amd64.deb
sudo dpkg -i sparsehash_2.0.2-1_amd64.deb
SparseConvNet is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
SparseConvNet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.