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