cotengra
is a python library for contracting tensor networks or einsum
expressions involving large numbers of tensors - the main docs can be found
at cotengra.readthedocs.io.
Some of the key feautures of cotengra
include:
- drop-in
einsum
andncon
replacement - an explicit contraction tree object that can be flexibly built, modified and visualized
- a 'hyper optimizer' that samples trees while tuning the generating meta-paremeters
- dynamic slicing for massive memory savings and parallelism
- support for hyper edge tensor networks and thus arbitrary einsum equations
- paths that can be supplied to
numpy.einsum
,opt_einsum
,quimb
among others - performing contractions with tensors from many libraries via
cotengra
, even if they don't provideeinsum
ortensordot
but do have (batch) matrix multiplication