sharing#

Shared Tucker factors (SF-T3): the sharing partition, the tied-factors checkers, and the per-frame companion.

validate_sharing canonicalizes a per-mode label spec into the static groups form; t3_sharing_residual / t3_tucker_factors_shared are the non-enforcing tied-factors checkers (the safe-mode precondition behind the shared operations); t3_tie_tucker_factors is the plain per-group mean (drift repair for nearly-tied POINTS – never the metric projection of a tangent, which is geometry-specific and lives with the shared geometry). fv_shared_frame_data derives the SharedFrameData companion from an orthogonal frame – the per-group center cores and the thin SVD of the stacked S factors that the shared geometry’s projection, retraction, and spectrum diagnostics consume.

A shared T3 is an ordinary Tucker tensor train whose Tucker factors are equal within user-specified groups of modes – the SF-ETT decomposition of Molozhavenko & Rakhuba (2026), “Optimization on the extended tensor-train manifold with shared factors” (Comput. Appl. Math. 45:221), generalized to an arbitrary partition of the modes into sharing groups. The shared-factor format originates with SF-Tucker: Peshekhonov, Arzhantsev & Rakhuba (2024), “Training a Tucker model with shared factors: a Riemannian optimization approach” (AISTATS, PMLR 238).

Classes#

SharedFrameData

The per-frame companion of the shared geometry: everything the tied projection,

Functions#

validate_sharing(sharing, shape)

Validate a sharing partition and return its canonical groups form.

canonical_groups(sharing, shape)

Normalize a sharing spec to a canonical partition, collapsing "nothing is tied" to ().

nontrivial_groups(groups)

The sharing groups that actually tie anything (two or more modes), in canonical order.

groups_to_labels(groups)

The inverse of validate_sharing(): per-mode integer labels for a canonical

t3_sharing_residual(x, sharing)

Non-enforcing check of the shared-factors property, per stack element.

t3_tucker_factors_shared(x, sharing[, rtol])

True (per stack element) where the Tucker factors are tied within every sharing group.

t3_tie_tucker_factors(x, sharing)

Tie the Tucker factors exactly, by per-group arithmetic averaging.

ut3_tie_tucker_factors(data, sharing)

The uniform twin of t3_tie_tucker_factors(): tie the Tucker factors exactly, by

fv_shared_frame_data(frame_data, groups)

Derive the shared-geometry companion from an orthogonal frame.

fv_share_tucker_variations(variations_data, shared_data)

The tied post-pass of the shared MANIFOLD geometry: orthogonally project gauged Tucker

fv_tied_ambient_directions(variations_data, shared_data)

Recover each group's common gauged ambient direction Udot from (tied) Tucker

fv_share_tucker_variations_corewise(variations_data, ...)

The tied post-pass of the shared COREWISE geometry: orthogonally project raw core

fv_tied_variations_residual(variations, shared_data[, ...])

How far a tangent's coordinates are from the TIED tangent subspace, per stack element.

ut3_sharing_residual(data, sharing)

The uniform twin of t3_sharing_residual(): per stack element, the max over groups and

ut3_tucker_factors_shared(data, sharing[, rtol])

True (per stack element) where the MASKED Tucker factors are tied within every sharing group --

ufv_shared_frame_data(frame_data, groups)

The uniform twin of fv_shared_frame_data(): the IDENTICAL polymorphic derivation

ufv_share_tucker_variations(variations_data, shared_data)

The uniform twin of fv_share_tucker_variations() (the manifold tied post-pass):

ufv_share_tucker_variations_corewise(variations_data, ...)

The uniform twin of fv_share_tucker_variations_corewise() (the corewise tied post-pass):

ufv_tied_variations_residual(variations_data, shared_data)

The uniform twin of fv_tied_variations_residual(), on the MASKED variation content.

t3_tucker_weights_sharing_residual(weights, sharing)

Non-enforcing check that edge weights are COMPATIBLE with a sharing partition, per stack

t3_tucker_weights_shared(weights, sharing[, rtol])

True (per stack element) where the Tucker weights are equal within every sharing group --

ut3_tucker_weights_sharing_residual(weights_data, sharing)

The uniform twin of t3_tucker_weights_sharing_residual(): the comparison runs on the

ut3_tucker_weights_shared(weights_data, sharing[, rtol])

True (per stack element) where the MASKED Tucker weights are equal within every sharing