CP分解和Tucker分解的區別

2021-08-29 18:17:43 字數 871 閱讀 6506

cp分解圖示:

tucker分解圖示:

兩者的區別如下:

1.主要區別:核張量(core tensor)

tucker分解的結果會形成乙個核張量,即pca中的主成分因子,來表示原張量的主要性質,而cp分解沒有核張量。

2.tensor分解是n-秩與低秩近似,而cp分解是秩與低秩近似

在cp分解時我們都是先固定秩的個數,再去迭代,即沒有用到張量本身的秩;但是在tucker分解時我們是根據張量本身的秩進行分解的。

3.tucker分解的唯一性不能保證

對於固定的n

nn-秩,tucker分解的唯一性不能保證,一般加上一些約束,如分解得到的因子單位正交約束等。cp分解的求解首先要確定分解的秩1張量的個數,通常我們通過迭代的方法對r

rr從1開始遍歷直到找到乙個合適的解。

4可加約束的共性

在一些應用中,為了使得cp分解更加的魯棒和精確,可以在分解出的因子上加上一些先驗知識即約束。比如說平滑約束(smooth)、正交約束、非負約束(nonegative) 、稀疏約束(sparsity)等。

除了可以在tucker分解的各個因子矩陣上加上正交約束以外,還可以加一些其它約束,比如稀疏約束,平滑約束,非負約束等。另外在一些應用的場景中不同的mode的物理意義不同,可以加上不同的約束。

5.應用領域不同

reference

機器學習/2016-06/tensor-decomposition-tucker.html

張量分解(二) CP分解

張量分解系列 張量分解 一 基礎知識 張量分解 二 cp分解 張量分解 三 tucker分解 張量分解 四 tensor train decomposition 張量分解 五 tensorizing neural network 張量分解 六 ttrnn model for video classi...

ALS計算CP分解

眾所周知,cp分解就是將乙個張量分解為一系列秩一張量之和。那麼在計算cp分解之前,首先我們會遇到的乙個問題就是如何確定張量的秩?也就是應該選擇多少個秩一張量來組成原始張量呢?不幸的是,確定張量的秩是乙個np hard問題,目前,已知的只能夠確定乙個張量秩的上界。例如,對於乙個一般的三維張量而言,r ...

cp分解實現 張量分解 一 資料篇

暫時不接觸張量了,但是之前有些工作還是要總結一下,否則總是心裡不踏實,有空我就補上一些,別指望我能更很快哦。首先我們來看看一些工具吧。這裡介紹的都是python相關的,matlab看看需不需要補吧。算是比較良心的乙個python庫,cp分解,tucker分解,以及tt分解 貌似最近更新的 的都有。支...