UT3Weights.from_ut3svd#

classmethod t3toolbox.uniform_tucker_tensor_train.UT3Weights.from_ut3svd(x, n=None, r=None, **kwargs)#
def from_ut3svd(
        cls,
        x: 'UniformTuckerTensorTrain',

        n: Optional[int] = None,   # padded Tucker width of the result; must be >= the t3svd result's (only grows)
        r: Optional[int] = None,   # padded TT width of the result;     e.g. n=x.n, r=x.r to pair with x itself
        **kwargs,                  # passed to UniformTuckerTensorTrain.t3svd (max_*_ranks, sharing, ...)
) -> 'UT3Weights':

The singular values of x as a weight object – the canonical (unmodified) sigmas, so from_ut3svd(x).reciprocal() is the inverse-sigma (Grasedyck-Kramer) weighting. Uniform twin of from_t3svd().

By default the weights carry the t3svd result’s (tight) masks, so they pair with that result – which is x itself only when x already has minimal ranks and tight padding:

xs, _, _ = x.t3svd(); W = UT3Weights.from_ut3svd(x); absorb_weights(xs, W)

On a train padded ABOVE its minimal ranks – the rank-continuation warm start – pass n/r (typically n=x.n, r=x.r, mirroring from_t3weights()) to zero-pad the weights to the train’s own widths, so W.is_consistent_with(x) holds and the headline GK route UT3FrameWeights.from_ut3weights(W).reciprocal() pairs with x’s frame with no ragged detour (review R10-4). Padding only grows: smaller-than-tight n/r raise.

Parameters:
Return type:

UT3Weights