MATLAB Tensor 和 N-Way 工具箱张量补全功能评测

Posted 陆嵩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB Tensor 和 N-Way 工具箱张量补全功能评测相关的知识,希望对你有一定的参考价值。

MATLAB Tensor 和 N-Way 工具箱张量补全功能评测

文章目录


在 MATLAB 中,比较成熟的工具箱有 tensor toolbox、n-way toolbox 和 TT-Toolbox (TT=Tensor Train) 。那么,在这些工具箱中,具有通过张量分解进行张量补全功能的有:

  • cp_wopt(CP 基于优化):张量工具箱中用于处理缺失数据的加权直接优化 (WOPT) 方法。它是 cp_opt 基于缺失数据的一种改进。
  • parafac(CP 基于 ALS):nway 工具箱中的 CP 分解函数,缺失数据设置为 NaN,使用 EM 算法进行处理。它是基于 cp_als 的一种算法的改进。
  • tucker(TUCKER 分解):nway 工具箱中的 tucker 分解函数,缺失数据设置为 NaN 即可。

各种乘积表示

Kronecker 乘积就是拿坐标矩阵的每一个元素去分别乘右边的矩阵,张成一个大矩阵。即
A ⊗ B = [ a 11 B a 12 B ⋯ a 1 J B a 21 B a 22 B ⋯ a 2 J B ⋮ ⋮ ⋱ ⋮ a I 1 B a I 2 B ⋯ a I J B ] \\mathbfA \\otimes \\mathbfB=\\left[\\beginarraycccc a_11 \\mathbfB & a_12 \\mathbfB & \\cdots & a_1 J \\mathbfB \\\\ a_21 \\mathbfB & a_22 \\mathbfB & \\cdots & a_2 J \\mathbfB \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ a_I 1 \\mathbfB & a_I 2 \\mathbfB & \\cdots & a_I J \\mathbfB \\endarray\\right] AB= a11Ba21BaI1Ba12Ba22BaI2Ba1JBa2JBaIJB
Khatri-Rao 乘积就是把相同列数的两个矩阵的对应列分别做 Kronecker 乘积,即
A ⊙ B = [ a 1 ⊗ b 1 a 2 ⊗ b 2 ⋯ a K ⊗ b K ] \\mathbfA \\odot \\mathbfB=\\left[\\beginarrayllll \\mathbfa_1 \\otimes \\mathbfb_1 & \\mathbfa_2 \\otimes \\mathbfb_2 & \\cdots & \\mathbfa_K \\otimes \\mathbfb_K \\endarray\\right] AB=[a1b1a2b2aKbK]
Hadamard 乘积就是两个相同规模的矩阵,矩阵对应相乘
A ∗ B = [ a 11 b 11 a 12 b 12 ⋯ a 1 J b 1 J a 21 b 21 a 22 b 22 ⋯ a 2 J b 2 J ⋮ ⋮ ⋱ ⋮ a I 1 b I 1 a I 2 b I 2 ⋯ a I J b I J ] \\mathbfA * \\mathbfB=\\left[\\beginarraycccc a_11 b_11 & a_12 b_12 & \\cdots & a_1 J b_1 J \\\\ a_21 b_21 & a_22 b_22 & \\cdots & a_2 J b_2 J \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ a_I 1 b_I 1 & a_I 2 b_I 2 & \\cdots & a_I J b_I J \\endarray\\right] AB= a11b11a21b21aI1bI1a12b12a22b22aI2bI2a1Jb1Ja2Jb2JaIJbIJ
乘积满足如下法则:
( A ⊗ B ) ( C ⊗ D ) = A C ⊗ B D ( A ⊗ B ) † = A † ⊗ B † A ⊙ B ⊙ C = ( A ⊙ B ) ⊙ C = A ⊙ ( B ⊙ C ) ( A ⊙ B ) ⊤ ( A ⊙ B ) = A ⊤ A ∗ B ⊤ B ( A ⊙ B ) † = ( ( A ⊤ A ) ∗ ( B ⊤ B ) ) † ( A ⊙ B ) ⊤ \\beginaligned (\\mathbfA \\otimes \\mathbfB)(\\mathbfC \\otimes \\mathbfD) &=\\mathbfA \\mathbfC \\otimes \\mathbfB \\mathbfD \\\\ (\\mathbfA \\otimes \\mathbfB)^\\dagger &=\\mathbfA^\\dagger \\otimes \\mathbfB^\\dagger \\\\ \\mathbfA \\odot \\mathbfB \\odot \\mathbfC &=(\\mathbfA \\odot \\mathbfB) \\odot \\mathbfC=\\mathbfA \\odot(\\mathbfB \\odot \\mathbfC) \\\\ (\\mathbfA \\odot \\mathbfB)^\\top(\\mathbfA \\odot \\mathbfB) &=\\mathbfA^\\top \\mathbfA * \\mathbfB^\\top \\mathbfB \\\\ (\\mathbfA \\odot \\mathbfB)^\\dagger &=\\left(\\left(\\mathbfA^\\top \\mathbfA\\right) *\\left(\\mathbfB^\\top \\mathbfB\\right)\\right)^\\dagger(\\mathbfA \\odot \\mathbfB)^\\top \\endaligned (AB)(CD)(AB)ABC(AB)(AB)(AB)=ACBD=ABMATLAB Tensor 和 N-Way 工具箱张量补全功能评测

torch和numpy的对比

torch7学习——Tensor

教程 | 如何通过PyTorch上手Tensor Comprehensions?

tensorflow中的1维卷积--conv1d用法

将tensor张量转换成图片格式并保存