1. 程式人生 > >張量展開與tensor tool box

張量展開與tensor tool box

1張量的定義

在維基百科上,張量被定義為“一個多重線性對映”:


這個可以理解為一個多維陣列,當變換座標或者變換基底的時候,其分量會按照一定的規則變換。

2.張量的模展開矩陣

在實際運算當中,我們有時需要對張量按照模展開矩陣。目的是對高維張量進行降階,轉換為矩陣進行運算。在張量的矩陣展開過程中,是對組成張量的所有階按交錯次序取樣,並非簡單地先採取某一階的特徵值在採取另一階的特徵值,而在整個採取過程中對不同階的特徵值進行混合交錯取樣,這樣在採集過程中實現了張量不同階特徵值之間的傳遞和融合。


具體以Element-wise的形式寫出來就是(以一個A(4*3*2)的三階張量為例):

對第一階模展開


A的第一階模展開矩陣是一個(4x6)的矩陣,矩陣中的6列是第二階和第三階特徵值交錯取值得到的。

對三階張量A的第二階模展開矩陣:


A的第二階模展開矩陣是一個(3x8)的矩陣。

對三階張量A的第三階模展開矩陣:


A的第三階模展開矩陣是一個(2x12)的矩陣。

3.Tensor_Toolbox的安裝與使用

3.1安裝

下載之前可能需要簡單的註冊一下,提交相關的使用者基本資訊,不難,應該能看得懂

可惜選擇.zip壓縮包或者是.tar.gz壓縮包格式。安裝的具體方法是:

(1).解壓當前安裝包;

(2).將tensor_toolbox_2.6 改名為 tensor_toolbox

(3).啟動matlab,選擇toolsbox所在的路徑,然後在matlab的命令視窗中鍵入如下命令:

  1. addpath(pwd) %將當前路徑新增到matlab工作路徑中去  
  2. cd met; addpath(pwd) %將子目錄met也新增進來  
  3. savepath %為後續程序儲存這兩個路徑  
如果安裝成功的話,可以在Help窗體中看到TensorToolBox的幫助文章名稱


3.2使用Tensor Toolbox

隨機生成稀疏張量

  1. R=sptenrand([5 4 2],12)  

上述命令生成一個5*4*2維的隨機稀疏張量,隨機值分佈在相應的下標位置上。


對稀疏張量分別進行模-1,模-2,模-3的展開(Unfolding)

  1. %對生成的張量R按照mode-1,mode-2,mode-3 Unfolding  
  2. tenmat(R,1);  
  3. tenmat(R,2);  
  4. tenmat(R,3);  
通過結果可以理解張量的具體展開方式


後面還要進一步採用張量分析進行例項資料的處理。