ManifoldGeometry.randn#

t3toolbox.manifold.ManifoldGeometry.randn(frame, stack_shape=())#
def randn(
        self,
        frame:          bvf.T3Frame,
        stack_shape:    typ.Tuple[int, ...] = (),  # extra tangent stack K (a batch of tangents)
) -> T3Tangent:  # gauged random tangent at frame

Random tangent at frame: a standard Gaussian on the tangent space T_xM.

Raw i.i.d. N(0, 1) variation cores, then the gauge projection project() (Pi). For an orthogonal frame this is exactly the standard Gaussian on T_xM – equivalently the orthogonal projection onto T_xM of the ambient standard normal. Minimal rank is not required: the gauge projection absorbs any rank redundancy, so the draw lands in the true tangent space regardless (verified against the ambient-normal projection on a non-minimal frame). stack_shape is the extra outer tangent stack K (default ()).

Inherits project()’s safe-mode ORTH precondition: a non-orthogonal frame raises (skipped under safety.unsafe() / a jax trace, where it yields a merely-gauged – not true Gaussian – tangent).

Parameters:
  • frame (T3Frame)

  • stack_shape (t3toolbox.backend.common.typ.Tuple[int, Ellipsis])

Return type:

T3Tangent