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

输出:系数矩阵 A R I 1 x R B R I 2 x R C R I 3 x R

将A,B,C初始化为大小为 I 1 × R I 2 × R I 3 × R 的随机矩阵

重复以下步骤直到收敛:

1) 固定B,C,更新A:

计算 A = X × 2 khatri_rao ( C , B ) × pinv ( khatri_rao ( C , B ) ) × A

其中,X2表示对应于X的第2个维度的张量乘法运算,khatri_rao表示Khatri-Rao乘积,pinv表示伪逆。

2) 固定A,C,更新B:

计算 B = X × 1 khatri_rao ( C , A ) × pinv ( khatri_rao ( C , A ) ) × B

其中,X1表示对应于X的第1个维度的张量乘法运算,khatri_rao表示Khatri-Rao乘积,pinv表示伪逆。

3) 固定A,B,更新C:

计算 C = X × 3 khatri_rao ( B , A ) × pinv ( khatri_rao ( B , A ) ) × C

其中,X3表示对应于X的第3个维度的张量乘法运算,khatri_rao表示Khatri-Rao乘积,pinv表示伪逆。

返回系数矩阵A,B,C