t3toolbox.uniform_basis_variations_format.UT3Basis#

class t3toolbox.uniform_basis_variations_format.UT3Basis#

Basis for basis-variations representation of uniform Tucker tensor trains

Uniform version of T3Basis

Examples

>>> import numpy as np
>>> import t3toolbox.uniform_basis_variations_format as ubcf
>>> stack_shape = (2,)
>>> d, N, nU, nD, rL, rR = 3, 12, 7, 8, 5, 4
>>> up_cores = np.random.randn(*((d,) + stack_shape + (nU, N)))
>>> down_cores = np.random.randn(*((d,) + stack_shape + (rL, nD, rR)))
>>> left_cores = np.random.randn(*((d,) + stack_shape + (rL, nU, rL)))
>>> right_cores = np.random.randn(*((d,) + stack_shape + (rR, nU, rR)))
>>> shape_mask = np.random.choice([True, False], (d,N))
>>> up_mask = np.random.choice([True, False], (d,)+stack_shape+(nU,))
>>> down_mask = np.random.choice([True, False], (d,)+stack_shape+(nD,))
>>> left_mask = np.random.choice([True, False], (d+1,)+stack_shape+(rL,))
>>> right_mask = np.random.choice([True, False], (d+1,)+stack_shape+(rR,))
>>> basis = ubcf.UT3Basis(up_cores, down_cores, left_cores, right_cores, shape_mask, up_mask, down_mask, basis_left_mask, basis_right_mask)
up_tucker_supercore: t3toolbox.backend.common.NDArray#
down_tt_supercore: t3toolbox.backend.common.NDArray#
left_tt_supercore: t3toolbox.backend.common.NDArray#
right_tt_supercore: t3toolbox.backend.common.NDArray#
shape_mask: t3toolbox.backend.common.NDArray#
up_mask: t3toolbox.backend.common.NDArray#
down_mask: t3toolbox.backend.common.NDArray#
basis_left_mask: t3toolbox.backend.common.NDArray#
basis_right_mask: t3toolbox.backend.common.NDArray#
data() t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray]#
d() int#
N() int#
nU() int#
nD() int#
rL() int#
rR() int#
stack_shape() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
uniform_structure() t3toolbox.backend.common.typ.Tuple[int, int, int, int, int, int, t3toolbox.backend.common.typ.Tuple[int, Ellipsis]]#
uniform_variation_shapes() t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis]]#
shape() t3toolbox.backend.common.typ.Tuple[int, Ellipsis]#
up_ranks() t3toolbox.backend.common.NDArray#
down_ranks() t3toolbox.backend.common.NDArray#
left_ranks() t3toolbox.backend.common.NDArray#
right_ranks() t3toolbox.backend.common.NDArray#
structure() t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray, t3toolbox.backend.common.typ.Tuple[int, Ellipsis]]#
variation_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]]#

T3Variations 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
     |     |     |     |

Examples

#### EXAMPLE IS WORK IN PROGRESS >>> import numpy as np >>> import t3toolbox.basis_variations_format as bcf >>> ss = (2,3) # not included in variation_shapes. >>> 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))) >>> basis = bcf.T3Basis(tucker_cores, left_tt_cores, right_tt_cores, outer_tt_cores) >>> print(basis.variation_shapes) (((9, 14), (8, 15), (7, 16)), ((1, 10, 4), (2, 11, 5), (3, 12, 1)))

apply_masks() UT3Basis#

Apply masks to the basis supercores, zeroing out unmasked entries.

Examples

>>> import numpy as np
validate() None#

Check rank and shape consistency of uniform Tucker tensor train basis (UT3Basis).

Parameters:

x (UT3Basis)

Raises:

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

See also

UT3Basis, UT3Variations

__post_init__()#