输入:稀疏张量 X R I 1 × I 2 × I 3 ,分解阶数R1,R2,R3

输出:系数矩阵 A 1 R I 1 × R 1 A 2 R I 2 × R 2 A 3 R I 3 × R 3 ,核张量 g R R 1 × R 2 × R 3

将A1,A2,A3初始化为大小为 I 1 × R 1 I 2 × R 2 I 3 × R 3 的随机矩阵

重复以下步骤直到收敛:

1) 固定A2,A3和G,更新A1

计算 A 1 = X × 2 ( A 3 , A 2 ) × ( ( A 3 , A 2 ) ) × A 1

2) 固定A1,A3和G,更新A2

计算 A 2 = X × 1 ( A 3 , A 1 ) × ( ( A 3 , A 1 ) ) × A 2

3) 固定A1,A2和G,更新A3

计算 A 3 = X × 1 ( A 2 , A 1 ) × ( ( A 2 , A 1 ) ) × A 3

4) 更新核张量G: G = reshape ( A 1 × ( A 2 , A 3 ) × unfold ( X , 1 ) , R 1 , R 2 , R 3 )

其中, 表示Khatri-Rao乘积,unfold(X, 1)表示将X沿着第1个维度展开成一个矩阵。

返回系数矩阵A1,A2,A和核张量G。