t3toolbox.weighted_tucker_tensor_train.EdgeVectors#

class t3toolbox.weighted_tucker_tensor_train.EdgeVectors#

Vectors that “live” on edges in a T3 tensor network.

Attributes:#

shape_vectors: typ.Sequence[NDArray]

Vectors on externally facing edges. len=d, elm_shape=stack_shape+(Ni,)

tucker_vectors: typ.Sequence[NDArray]

Vectors on edges between Tucker cores and TT cores. len=d, elm_shape=stack_shape+(ni,)

tt_vectors: typ.Sequence[NDArray]

Vectors on edges between adjacent TT cores. len=d+1, elm_shape=stack_shape+(ri,)

tucker_edge_vectors: t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis]#
tt_vectors: t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis]#
data() t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis]]#
d() int#
tucker_ranks() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
tt_ranks() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
stack_shape() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
validate()#
__post_init__()#
reverse() EdgeVectors#

Reverse edge vector ordering.

Examples

>>> import numpy as np
>>> import t3toolbox.tucker_tensor_train as t3
>>> import t3toolbox.weighted_tucker_tensor_train as wt3
>>> randn = np.random.randn
>>> tucker_vectors = tuple([randn(9,10, 5), randn(9,10, 6), randn(9,10, 7)])
>>> tt_vectors = tuple([randn(9,10, 1), randn(9,10, 2), randn(9,10, 3), randn(9,10, 4)])
>>> ev = wt3.EdgeVectors(tucker_vectors, tt_vectors)
>>> ev_rev = ev.reverse()
>>> print(ev.tucker_ranks, ev.tt_ranks)
(5, 6, 7) (1, 2, 3, 4)
>>> print(ev_rev.tucker_ranks, ev_rev.tt_ranks)
(7, 6, 5) (4, 3, 2, 1)