使用Tensorly的非负张量分解示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Tensorly的非负张量分解示例相关的知识,希望对你有一定的参考价值。

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

答案

界面与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 page的功能。

以上是关于使用Tensorly的非负张量分解示例的主要内容,如果未能解决你的问题,请参考以下文章

tensorly | ImportError: cannot import name ‘check_random_state‘ from ‘tensorly.random‘ 解决方法

tensorly | ImportError: cannot import name ‘check_random_state‘ from ‘tensorly.random‘ 解决方法

大型稀疏矩阵上的快速非负矩阵分解

张量分解后重新组合一个张量

Leetcode 600.不包含连续1的非负整数

TensorFlow.js:那两个张量相等吗?