t3toolbox.uniform_tucker_tensor_train.ut3_apply#

t3toolbox.uniform_tucker_tensor_train.ut3_apply(x: UniformTuckerTensorTrain, input_vectors: t3toolbox.backend.common.NDArray, use_jax: bool = False) t3toolbox.backend.common.NDArray#

Apply a uniform Tucker tensor train to vectors. WORK IN PROGRESS

Examples

>>> import numpy as np
>>> import t3toolbox.tucker_tensor_train as t3
>>> import t3toolbox.uniform_tucker_tensor_train as ut3
>>> x = t3.t3_corewise_randn((14,15,16), (4,5,6), (1,3,2,1))
>>> vecs = [np.random.randn(3,14), np.random.randn(3,15), np.random.randn(3,16)]
>>> result = t3.t3_apply(x, vecs)
>>> uniform_x = ut3.t3_to_ut3(x)
>>> uvecs = ut3.pack_vectors(vecs)
>>> result2 = ut3.ut3_apply(uniform_x, uvecs)
>>> print(np.linalg.norm(result - result2))
0.0

Vectorize over UT3s

>>> import numpy as np
>>> import t3toolbox.tucker_tensor_train as t3
>>> import t3toolbox.uniform_tucker_tensor_train as ut3
>>> x = t3.t3_corewise_randn((14,15,16), (4,5,6), (1,3,2,1), stack_shape=(2,3))
>>> vecs = [np.random.randn(3,14), np.random.randn(3,15), np.random.randn(3,16)]
>>> result = t3.t3_apply(x, vecs)
>>> uniform_x = ut3.t3_to_ut3(x)
>>> uvecs = ut3.pack_vectors(vecs)
>>> result2 = ut3.ut3_apply(uniform_x, uvecs)
>>> print(np.linalg.norm(result - result2))
0.0