t3toolbox.basis_coordinates_format.T3Coordinates#

class t3toolbox.basis_coordinates_format.T3Coordinates#

Tuple containing coordinate cores for basis-coordinate representations of TuckerTensorTrains.

Components
  • tucker_coordinates = (V0, …, V(d-1)), elm_shape=(nDi, Ni)

  • tt_coordinates = (H0, …, H(d-1)), elm_shape=(rLi, nUi, rRi)

The coordinates should fit in the “holes” of a T3Basis.

See also

T3Basis

Examples

>>> import numpy as np
>>> import t3toolbox.basis_coordinates_format as bcf
>>> ss = (2,3) # stack shape
>>> tucker_cores = (np.ones(ss+(10, 14)), np.ones(ss+(11, 15)), np.ones(ss+(12, 16)))
>>> left_tt_cores = (np.ones(ss+(1, 10, 2)), np.ones(ss+(2, 11, 3)), np.ones(ss+(3,12,5)))
>>> right_tt_cores = (np.ones(ss+(2, 10, 4)), np.ones(ss+(4, 11, 5)), np.ones(ss+(5, 12, 1)))
>>> outer_tt_cores = (np.ones(ss+(1, 9, 4)), np.ones(ss+(2, 8, 5)), np.ones(ss+(3, 7, 1)))
>>> base = bcf.T3Basis(tucker_cores, left_tt_cores, right_tt_cores, outer_tt_cores)
>>> print(base.structure)
((14, 15, 16), (10, 11, 12), (1, 2, 3, 5), (2, 4, 5, 1), (9, 8, 7), (2, 3))
>>> tucker_coords = tuple([np.ones(ss + B_shape) for B_shape in base.coordinate_shapes[0]])
>>> tt_coords = tuple([np.ones(ss + G_shape) for G_shape in base.coordinate_shapes[1]])
>>> coords = bcf.T3Coordinates(tucker_coords, tt_coords) # variation that fits with base
>>> print(coords.structure) # same as base, except first right tt rank and last left tt rank, which are None
((14, 15, 16), (9, 8, 7), (1, 2, 3, None), (None, 4, 5, 1), (10, 11, 12), (2, 3))
tucker_coordinates: t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis]#
tt_coordinates: t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis]#
d() int#
shape() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
up_tucker_ranks() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
down_tucker_ranks() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
left_ranks() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
right_ranks() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
stack_shape() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
structure() t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis]]#
coordinate_shapes() t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], Ellipsis], t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], Ellipsis]]#

T3Coordinates shapes that fit with this T3Basis.

Shapes of the “holes” in the following tensor diagrams:

1 -- L0 -- ( ) -- R2 -- R3 -- 1
     |      |      |      |
     U0     U1     U2     U3
     |      |      |      |

1 -- L0 -- L1 -- O2 -- R3 -- 1
     |     |     |     |
     U0    U1    ( )   U3
     |     |     |     |
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]]#
validate() None#

Check rank and shape consistency of Tucker tensor train coordinates (T3Coordinates).

Parameters:

self (T3Coordinates)

Raises:

ValueError – Error raised if the cores of the T3Coordinates have inconsistent shapes.

See also

T3Basis, T3Coordinates

__post_init__()#