geomCG: Riemannian Tensor Completion

Numerical Linear Algebra Group

geomCG: Tensor Completion by Riemannian Optimization

geomCG is an implementation of a Riemannian tensor completion algorithm [1]. It performs a geometric non-linear conjugate gradient optimization scheme on the manifold of tensors of fixed multi-linear rank. For a detailed algorithmic description, we refer to the technical report.

It makes use of the Tensor Toolbox 2.5 [2,3], which has to be installed and added to your Matlab path first.

geomCG is licensed under a 2-clause BSD license, see LICENSE.txt contained in the download.


Download the code here:

This code is research code and not intended for production use. If you publish a research paper using this code, we would appreciate a reference to the paper [1] describing our implementation.

After having downloaded and installed the Tensor Toolbox 2.5, navigate to the geomCG folder within Matlab and run install.m. A mex compiler is necessary for the optimized C routines handling the sparse tensors.

geomCG was sucessfully tested on

  • Linux: Matlab R2009b and R2012a
  • Mac OS: Matlab R2012a and R2013a
  • Windows: Matlab R2012b
Earlier versions may not work.

Example code for geomCG is found in the subdirectory examples.


  1. D. Kressner, M. Steinlechner, B. Vandereycken: Low-Rank Tensor Completion by Riemannian Optimization. MATHICSE Technical Report 20.2013, June 2013.
  2. B. W. Bader, T. G. Kolda and others. MATLAB Tensor Toolbox Version 2.5, January 2012.
  3. B. W. Bader and T. G. Kolda. Algorithm 862: MATLAB tensor classes for fast algorithm prototyping, ACM Transactions on Mathematical Software 32(4):635-653, December 2006.

Author & Contact

Questions and suggestions about geomCG should be sent to Michael Steinlechner.


The toolbox is published under the BSD 2-clause license. Note the following disclaimer:

This software is provided by the author ``as is'' and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the author or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.