Linked-LCA (lcapt, forked) provides the ability to flexibly build single- or multi-layer convolutional sparse coding networks in PyTorch with the Locally Competitive Algorithm (LCA) on linked data to infer behavior. LCA-Pytorch currently supports 1D, 2D, and 3D convolutional LCA layers, which maintain all the functionality and behavior of PyTorch convolutional layers. We currently do not support Linear (a.k.a. fully-connected) layers, but it is possible to implement the equivalent of a Linear layer with convolutions.
LCA is a neuroscientific model that performs sparse coding by modeling the feature specific lateral competition observed throughout many different sensory areas in the brain, including the visual cortex. Under lateral competition, neurons with overlapping receptive fields compete to represent a shared portion of the input. This is a discrete implementation, but LCA can also be implemented in analog circuits and neuromorphic chips, such as IBM's TrueNorth and Intel's Loihi.
pip install git+https://github.com/cargonriv/linked-lca.git
git clone [email protected]:cargonriv/linked-lca.git
cd linked-lca
pip install .
Below is a mapping between the variable names used in this implementation and those used in Rozell et al.'s formulation of LCA.
-
Linked Dictionary Learning Using Built-In Update Method
-
Dictionary Learning Using Built-In Update Method
-
Dictionary Learning Using PyTorch Optimizer