t3toolbox.uniform_manifold.uniform_tangent_to_uniform_t3#
- t3toolbox.uniform_manifold.uniform_tangent_to_uniform_t3(variations: t3toolbox.OLD_uniform.UniformT3Variation, base: t3toolbox.OLD_uniform.UniformT3Base, bv_masks: t3toolbox.OLD_uniform.UniformBVEdgeWeights, include_shift: bool = False, use_jax: bool = False) Tuple[t3toolbox.OLD_uniform.UniformTuckerTensorTrain, t3toolbox.OLD_uniform.UniformEdgeWeights]#
- Rank 2r Tucker tensor train representation of tangent vector:
- u(x,y,z,w) = ([dG1(B x) L1(B x)]) ([R2(B y) 0]) ([R3(B z) 0]) ([R4(B w) ])
( ) ([dG2(B y) L2(B y)]) ([dG3(B z) L3(B z)]) ([dG4(B w)]) ( + ) ( + ) ( + ) ( + ) ([O1(dB x) 0]) ([0 0]) ([0 0]) ([0 ]) ( ) ([O2(dB y) 0]) ([O3(dB z) 0]) ([O4(dB w)])
Examples
>>> import numpy as np >>> import t3toolbox.tucker_tensor_train as t3 >>> import t3toolbox.manifold as t3m >>> import t3toolbox.uniform as ut3 >>> import t3toolbox.uniform_manifold as utm >>> import t3toolbox.orthogonalization as orth >>> import t3toolbox.t3svd as t3svd >>> p = t3.t3_corewise_randn(((14,15,16), (4,5,6), (5,3,2,4))) >>> p, _, _ = t3svd.t3svd(p) >>> base, dummy_var = orth.orthogonal_representations(p) >>> v = t3m.tangent_randn(base) >>> uniform_v, uniform_base, bv_mask = ut3.bv_to_ubv(v, base) >>> dense_v = t3m.tangent_to_dense(v, base) >>> x_ut3, masks_ut3 = utm.uniform_tangent_to_uniform_t3(uniform_v, uniform_base, bv_mask) >>> dense_uniform_v = ut3.ut3_to_dense(x_ut3, masks_ut3) >>> print(np.linalg.norm(dense_v - dense_uniform_v)) 4.72221182491572e-14