Интерфейс почти такой же, как у robust_pca one.
Давайте создадим случайный пример тензора X
,:
import tensorly as tl
import numpy as np
X = tl.tensor(np.random.random((10, 11, 12)))
Вы бы подали заявкуНадежный тензорный PCA выглядит следующим образом:
from tensorly.decomposition import robust_pca
D, E = robust_pca(X)
Это дает вам тензор низкого ранга D
и разреженный E
, такой что D + E = X
(приблизительно).
Вместо этого неотрицательный Такер вернет вам неотрицательное ядро и некоторые неотрицательные факторы.Обратите внимание, что теперь вы должны также указать ранг для декомпозиции.
from tensorly.decomposition import non_negative_tucker
core, factors = non_negative_tucker(X, rank=(12, 12, 12), n_iter_max=1000)
Вы можете восстановить тензор, используя их, и проверить ошибку восстановления:
reconstruction = tl.tucker_to_tensor(core, factors)
error = tl.norm(reconstruction - X)/tl.norm(X)
Вы можете иметьпосмотрите на страницу API для этой функции.