/sparsenet

Sparse dictionary learning

Primary LanguageC

Python implementation of sparse dictionary learning. Trains on Van Hateran's or David Field's natural image datasets. Based upon Sparsenet algorithm (1996 Olshausen & Field). Standard stochastic gradient descent to learn dictionary and multiple algorithms to infer coefficients. Minimizes the following objective function:

min_{\Phi, s} || I - \Phi*s ||^2 + || s ||_1

I: Data Phi: Learned dictionary s: Coefficients

L1 optimization LCA: Locally Competitive Algorithm (2006 Rozell et al.)
FISTA: Fast Iterative Shrinkage and Thresholding Algorithm (2009 Beck & Teboulle)
L0 optimization L1 Initialization and IHT: Iterative Hard Thresholding (2008 Blumensath & Davies)

To run: sparsenet(inference='fista')

2x Overcomplete Dictionary 2x Overcomplete Dictionary Trained on Natural Image Patches