# `tensorly.decomposition`.Tucker¶

class `Tucker`(rank=None, n_iter_max=100, init='svd', svd='numpy_svd', tol=0.0001, fixed_factors=None, random_state=None, mask=None, verbose=False)[source]

Tucker decomposition via Higher Order Orthogonal Iteration (HOI).

Decomposes tensor into a Tucker decomposition: `tensor = [| core; factors[0], ...factors[-1] |]` [1]

Parameters
tensorndarray
rankNone, int or int list

size of the core tensor, `(len(ranks) == tensor.ndim)` if int, the same rank is used for all modes

non_negativebool, default is False

if True, uses a non-negative Tucker via iterative multiplicative updates otherwise, uses a Higher-Order Orthogonal Iteration.

fixed_factorsint list or None, default is None

if not None, list of modes for which to keep the factors fixed. Only valid if a Tucker tensor is provided as init.

n_iter_maxint

maximum number of iteration

init{‘svd’, ‘random’}, optional
svdstr, default is ‘numpy_svd’

ignore if non_negative is True function to use to compute the SVD, acceptable values in tensorly.SVD_FUNS

tolfloat, optional

tolerance: the algorithm stops when the variation in the reconstruction error is less than the tolerance

random_state{None, int, np.random.RandomState}
verboseint, optional

level of verbosity

Returns
corendarray of size ranks

core tensor of the Tucker decomposition

factorsndarray list

list of factors of the Tucker decomposition. Its `i`-th element is of shape `(tensor.shape[i], ranks[i])`

References

1

tl.G.Kolda and B.W.Bader, “Tensor Decompositions and Applications”,

SIAM REVIEW, vol. 51, n. 3, pp. 455-500, 2009.