🍅 写在前面
👨🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
LeetCode算法实例
张量分解
张量分析系列知识,详见下方链接:
张量分解(1)——初探张量
张量分解(2)——张量运算
本系列文章主要参考论文:Tensor Decompositions and Applications∗
目录
- 范数
- 张量内积
- 张量外积
- Rank-one tensors
- Symmetry and tensors
- Diagonal tensors
- 矩阵转化
- 张量乘法
- Kronecker乘积
- Hadamard乘积
- Khatri-Rao乘积
范数
张量的范数是其所有元素的平方和的平方根。即
张量内积
张量a与张量b的内积表示为 <a,b>
定义与向量内积相同,计算过程也相同。张量内积同样是一个标量,是一个数,它是两个相同规格的张量,相同位置相乘再相加得到的。
张量外积
张量a与张量b的内积表示为 a○b
定义与向量外积类似,计算过程也类似。张量外积同样是一个矢量,也是一个张量形式。张量外积可以实现张量在维度上的扩展。张量外积计算例子如下。
Rank-one tensors
若一个n维张量可以写成是n个一维张量(向量)的外积,则它就是Rank-one tensor。如下图。
Symmetry and tensors
如果每个模态的大小相同,则张量称为立方体。如果立方张量的元素在指数的任何排列下保持不变,则立方张量被称为超对称张量。例如,如果满足以下条件的x∈RI×I×I张量为超对称张量。
Diagonal tensors
当一个张量的对角线元素全不为0并且相等,则称该张量为对角线张量。
下图显示了一个立方张量,其中的张量沿超对角线。
矩阵转化
张量是可以转化为矩阵的,通过展开或展平,是将N路数组的元素重新排序为矩阵的过程。例如,2 x 3 x 4张量可以排列为6x 4矩阵或3 x 8矩阵,依此类推。以下为建议的转化公式。
张量乘法
张量a与张量b相乘表示为:ab
张量乘法也成张量直积:有两个任意阶张量,第一个张量的每一个分量乘以第二个张量中的每一个分量,它们组合的集合仍然是一个张量,称为第一个张量乘以第二个张量的乘积。张量乘法举例如下:
Kronecker乘积
张量a和张量b的Kronecker乘积可表示为 a⨂b
运算过程按行进行,左边张量第一行的每一个元素乘右边张量第一行的每一个元素放在第一行,然后是左边张量第一行的每一个元素乘右边张量第二行的每一个元素放在第二行。以此类推。
Kronecker乘积运算举例如下:
Hadamard乘积
张量a和张量b的 Hadamard乘积可表示为 a*b
该运算要求为两个形状相同的张量,相同位置相乘即可。
Hadamard乘积运算举例如下:
Khatri-Rao乘积
张量a和张量b的 Khatri-Rao乘积可表示为 a⊙b
该运算定义了两个拥有相同列数张量的运算,两个相同位置的列做Kronecker乘积,在汇总即可。
Khatri-Rao乘积举例如下: