当前位置:   article > 正文

张量分解基础_张量cp分解及python实现 csdn

张量cp分解及python实现 csdn

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文主要对张量的基于pytorch的基础操作以及张量的CP分解、Tucker分解的关键知识点总结。


张量变换基础

1.Reshape

torch.reshape()可以对张量的各个维度的大小进行变换,但总的维度大小需保存不变。

import torch
a = torch.arange(4.)
b = torch.arange(4.)
##用法一
a = torch.reshape(a, (2, 2))
print(a.shape)
print(a)
##用法二
b = b.reshape(2,2)
print(b.shape)
print(b)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在ipython上做的实验(用法一)
用法二

2.permute

对矩阵维度之间的交换。
torch.permute(input, dims) → Tensor

import torch
c=torch.arange(24)
c=c.reshape(2,3,4)
print('c:\n',c)
print('c.shape',c.shape)
d = torch.permute(c,(2,0,1)) #index 0和index 2交换
e = c.permute(2,0,1) #也可以这么用
print('d.shape',d.shape)
print('d\n',d)
print('e.shape',e.shape)
print('e\n',e)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

输出结果如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.einsum

这是张量计算非常强大非常重要的一个函数
torch.einsum(equation, *operands) → Tensor

(1)计算 trace(迹)

"ii"表示对角线,这里与用的字母无关,例如你可以用“aa"

(2)计算diagonal,返回对角线

要求必须为方阵

(3)计算外积(outer product)

在这里插入图片描述
在这里插入图片描述

(4)张量相乘

在这里插入图片描述

在这里插入图片描述
->右边消失的维度即时沿着该维度累加,例如‘abc,cde->abe’
例如在神经网络中,我们想进行batch计算
在这里插入图片描述

二、张量矩阵化

可以参考b站课程【张量网络PyThon编程:1.4 张量网络图形表示】
实际上就是把张量变成矩阵。对于三维张量,有张量按模式展开成矩阵,假设原来张量维度(i,j,k)。
模一张开即为(i,j,k)->(i,jk)
模二展开即为(i,j,k)->(j,ik)
模三展开即为(i,j,k)->(k,ij)
来自知乎
可参考如何简单地理解和实现「张量展开」

我们可以借助torch.reshape()函数实现。

三、张量分解

关于这部分的知识点来自于张量网络PyThon编程

1、单秩分解

将K阶张量分解为K个向量的直积。

T = ζ ∏ ⊗ k = 0 K − 1 v ( k ) \boldsymbol{T}=\zeta \prod_{\otimes k=0}^{K-1} \boldsymbol{v}^{(k)} T=ζk=0K1v(k)

其中 ζ \zeta ζ是一个标量系数。
由于大多数张量不存在严格的单秩分解,于是便有了最优单秩近似问题。

min ⁡ ζ , { ∣ v [ k ] ∣ = 1 } ∣ T − ζ ∏ ⊗ k = 0 K − 1 v ( k ) ∣ \min _{\zeta,\left\{\left|v^{[k]}\right|=1\right\}}\left|\boldsymbol{T}-\zeta \prod_{\otimes k=0}^{K-1} \boldsymbol{v}^{(k)}\right| minζ,{v[k]=1} Tζk=0K1v(k)

通过对张量进行单秩分解,我们可以达到对参数进行压缩的目的。

2、CP分解(Canonical polyadic decomposition)

CP分解,是将张量分解为一系列秩一张量之和。
将单秩张量的形式稍作扩展,定义CP积,设N阶张量

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/176561
推荐阅读
相关标签