输入:稀疏张量 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。