首页 > 解决方案 > 使用 Tensorly 的非负张量分解示例

问题描述

我对张量和张量库都很陌生。我遇到了 jeankossaifi 上张量分解的最佳示例之一,但我需要一个张量函数non_negative_tucker () 通过扩展上面链接上的示例来进行张量分解(对于 Olivetti数据集)。

标签: pythontensorflowtensortensorly

解决方案


该接口与robust_pca接口几乎相同。

让我们创建一个随机示例张量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 (大约)。

相反,非负 Tucker 会给你一个非负核心和一些非负因素。请注意,现在您还必须为分解指定等级。

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 页面


推荐阅读