shivak / ldstack

Reference implementation of LDStack from "Linear Dynamical Systems as a Core Computational Primitive", NeurIPS 2020.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linear Dynamical Systems as a Core Computational Primitive

This is a reference implementation of the eponymous paper at NeurIPS 2020. The main construction is LDStack, a drop-in replacement for nonlinear RNNs (e.g. LSTMs) which (1) runs in parallel across the sequence length, and (2) is easier to interpret and analyze, since it is composed from linear systems. The core computational primitive: single-input, multiple-output (SIMO) LDS parameterized in terms of complex eigenvalues. These have a parallel CUDA implementation. The Jupyter notebook reproduces the experiments provided in the paper.

The broad goal: make RNNs fast (on long sequences), accurate (with nonlinear expressive power) and trustworthy (via simpler mathematical and intuitive analysis). If you are a researcher or practitioner interested in trustworthy machine learning models, reach out to me and I will help you apply this method.

Frequently Asked Questions

How do I build the CUDA op? Use the build.sh script in the linear_recurrent_net folder. We will soon provide a PyPI package that you can pip install.

Is there a PyTorch version? Soon!

About

Reference implementation of LDStack from "Linear Dynamical Systems as a Core Computational Primitive", NeurIPS 2020.

License:MIT License


Languages

Language:Jupyter Notebook 55.9%Language:Python 24.9%Language:C++ 17.3%Language:C 1.1%Language:Shell 0.8%