UniformManifoldGeometry ======================= .. toctree:: :hidden: /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.frame /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.randn /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.random_orthogonal /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.randn_like /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.project /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.project_oblique /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.inner /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.norm /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.retract /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.project_ambient /autoapi/t3toolbox/uniform_manifold/UniformManifoldGeometry.transport .. py:class:: t3toolbox.uniform_manifold.UniformManifoldGeometry The Riemannian geometry of the uniform fixed-rank Tucker tensor train manifold (uniform mirror of :py:class:`~t3toolbox.manifold.ManifoldGeometry`). A stateless bundle of the chart-level choices that distinguish the manifold from the over-parametrized corewise geometry -- the orthonormal frame (:py:meth:`frame`), the gauge projection ``Pi`` (:py:meth:`project`), and the manifold retraction (:py:meth:`retract`) -- plus the ambient projection and transport. Tangents live in ``T_xM`` with an orthonormal, gauged frame; the metric is Hilbert-Schmidt. All methods are **per-element-mask-aware** (varying ranks across the frame stack ``C`` are supported) and carry the per-element safe-mode preconditions (orthogonal frame, gauged variations; ``.all()`` over the stack). Use the module singleton :py:data:`UNIFORM_MANIFOLD`. The corewise counterpart is :py:class:`UniformCorewiseGeometry`. .. rubric:: Examples >>> import numpy as np >>> import t3toolbox.tucker_tensor_train as t3 >>> import t3toolbox.uniform_tucker_tensor_train as ut3 >>> import t3toolbox.uniform_manifold as ut3m >>> np.random.seed(0) >>> x = ut3.UniformTuckerTensorTrain.from_t3(t3.TuckerTensorTrain.randn((10, 11, 12), (3, 4, 3), (1, 2, 2, 1))) >>> frame = ut3m.UNIFORM_MANIFOLD.frame(x) # orthonormal frame at x >>> print(bool(frame.is_orthogonal().all())) True >>> v = ut3m.UNIFORM_MANIFOLD.randn(frame) # a standard Gaussian on T_xM (gauged) >>> print(bool(v.is_gauged().all())) True >>> y = ut3m.UNIFORM_MANIFOLD.retract(ut3m.UT3Tangent.zeros(frame)) # retract the zero tangent == the base point >>> print(bool(np.allclose(y.to_dense(), x.to_dense()))) True Methods ------- .. autoapisummary:: t3toolbox.uniform_manifold.UniformManifoldGeometry.frame t3toolbox.uniform_manifold.UniformManifoldGeometry.randn t3toolbox.uniform_manifold.UniformManifoldGeometry.random_orthogonal t3toolbox.uniform_manifold.UniformManifoldGeometry.randn_like t3toolbox.uniform_manifold.UniformManifoldGeometry.project t3toolbox.uniform_manifold.UniformManifoldGeometry.project_oblique t3toolbox.uniform_manifold.UniformManifoldGeometry.inner t3toolbox.uniform_manifold.UniformManifoldGeometry.norm t3toolbox.uniform_manifold.UniformManifoldGeometry.retract t3toolbox.uniform_manifold.UniformManifoldGeometry.project_ambient t3toolbox.uniform_manifold.UniformManifoldGeometry.transport