t3toolbox.uniform_tucker_tensor_train.ut3_probe#

t3toolbox.uniform_tucker_tensor_train.ut3_probe(input_vectors: t3toolbox.backend.common.NDArray, x: UniformTuckerTensorTrain, 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)]
>>> zz = t3.t3_probe(vecs, x)
>>> uniform_x = ut3.t3_to_ut3(x)
>>> uvecs = ut3.pack_vectors(vecs)
>>> uzz = ut3.ut3_probe(uvecs, uniform_x)
>>> zz2 = ut3.unpack_vectors(uzz, uniform_x.shape)
>>> for z, z2 in zip(zz, zz2): print(np.linalg.norm(z - z2))
5.654425920339536e-13
6.019471570221263e-13
9.452355114682054e-13

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)]
>>> zz = t3.t3_probe(vecs, x)
>>> uniform_x = ut3.t3_to_ut3(x)
>>> uvecs = ut3.pack_vectors(vecs)
>>> uzz = ut3.ut3_probe(uvecs, uniform_x)
>>> zz2 = ut3.unpack_vectors(uzz, uniform_x.shape)
>>> for z, z2 in zip(zz, zz2): print(np.linalg.norm(z - z2))
2.5704672147788592e-12
1.724614542977838e-12
2.394748346461898e-12