UniformManifoldGeometry.project_ambient#

t3toolbox.uniform_manifold.UniformManifoldGeometry.project_ambient(frame, grad)#
def project_ambient(
        self,
        frame:  ubv.UT3Frame,                     # orthogonal base point of the tangent space
        grad:   ut3.UniformTuckerTensorTrain,     # ambient gradient as a uniform Tucker tensor train
) -> UT3Tangent:  # the Riemannian gradient (gauged projection of grad) at frame

Project an ambient gradient onto T_xM – the Riemannian gradient.

grad is the Euclidean/ambient gradient as a UniformTuckerTensorTrain. Returns the gauged tangent P_T(grad) (the residual grad - P_T(grad) is orthogonal to the tangent space). Requires an orthogonal frame (minimal rank not required); enforced in safe mode (skipped under safety.unsafe() / a jax trace).

Unlike the ragged project_ambient(), the uniform layer has no native dense-array path (the uniform layer is a performance layer; working dense here defeats its purpose). For a dense gradient, go via the ragged geometry and the cross-layer converters (UT3Frame.to_t3frame() -> MANIFOLD.project_ambient -> UT3Tangent.from_t3tangent()).

Parameters:
Return type:

UT3Tangent