Skip to content

ahwillia/tensor-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Short Tutorial on Tensor Decompositions and Multi-Trial Neural Data

Alex H. Williams

This is a short and self-contained example that illustrates how to fit canonical polyadic (CP) tensor decompositions to multi-trial neural data.

Background

A very common and generic experimental design in neuroscience is to record the activity of many neurons across repeated behavioral trials. Let's say we record the activity of N neurons at T time points in each trial, and that there are K total trials. A natural way to represent this data is a three-dimensional data array with dimensions N x T x K. Higher-order arrays like this are called tensors.

We would like to find a compact and interpretable description of this multi-trial dataset. This goal is often called dimensionality reduction, and involves reducing the measured dimensionality of the data (which can easily involve hundreds of neurons, and hundreds of trials given current experimental technologies) to a handful of latent factors. Principal Components Analysis (PCA) is a classic technique for dimensionality reduction (click here for a shameless plug).

CP decomposition extends PCA to higher-order tensors. In fact, PCA is CP decomposition on a matrix (i.e. a second-order tensor). As described above, multi-trial data is naturally represented as a third-order tensor. Applying CP decomposition to this tensor produces low-dimensional factors for within-trial as well as across-trial changes in neural activity.

CP decomposition is an attractive technique both because it is conceptually simple (each trial is modeled as a linear combination of latent factors) and because it has some subtle advantages (the optimal model is unique, whereas the factors identified by PCA can be rotated arbitrarily without affecting reconstruction error).

More background reading

Contents

  • See /matlab for a tutorial on fitting tensor decompositions with Sandia's TensorToolbox
  • TensorLab is another useful toolbox for MATLAB users.
  • For Python code, see tensortools (a small library I made) and tensorly (a larger library with slightly different goals/focus).

Contact

Please get in touch if you have any questions/comments.

About

A quickstart guide to tensor decomposition

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages