matlab中tensor_toolbox的用法

本篇博客是根据MATLAB tensor classes for fast algorithm prototyping和efficient matlab computations with sparse and factored tensors 两篇论文整理而成,为了方便,截取了原论文中的大量内容作为插入图片。本博客使用的matlab工具箱为tensor_toolbox。该博客的内容仅供自己和大家学习tensor的matlab的基本操作为主,不涉及商业使用,严禁用于商业用途。转载请注明出处。

张量(tensor)指的是多维或n-array数组,开发tensor工具箱考虑的是特殊结构的张量如何允许高效存储和计算。 首先考虑稀疏张量, 并描述了该格式下的各种数学运算的计算效率包括典型的张量分解算法。其次,我们研究了因子化张量(factored tensor), 这类张量具有更基础的分量的性质。 主要包括两类: Tucker tensor 和Kruskal tensor(rank-1 tensors的和)。

1. 数组与张量的相互转化

a = rand([3,4,5]);
T = tensor(a); % 将数组转化为tensor
A = double(T); % 将tensor转化为array

2. 返回tensor的阶数(mode的个数)

matlab 命令 whos 并不能正确报告scalar(order-0)或者向量(order-1)的阶数

ndims(T)

3. 对张量进行索引和矩阵的形式是一样的

T(1,2,2:3)

4. tensor 的一般运算

在这里插入图片描述

5. n-mode 张量乘以矩阵

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

x = tensor(rand([3,4,5]));
C1 = rand(3);
C2 = rand(4);
C3 = rand(5);
y = ttm(x,{C1,C2,C3},1:3);

注意: 这里的x必须是一个张量, { C 1 , C 2 , C 3 } \{C_1,C_2,C_3\} {C1,C2,C3}是一个cell格式的矩阵列表,1:3表示张量x需要做乘法的mode。

在这里插入图片描述

6. 张量乘以向量

x = tensor(rand([3,4,5]));
C1 = rand(3);
C2 = rand(4);
C3 = rand(5,1);
y = ttm(x,{C1,C2},1:2);
y = ttv(y,C3,3);

注意:当需要乘的东西是一个向量时,必须用ttv命令,其用法与ttm一致。

在这里插入图片描述

7. 张量 乘以 张量

我们考虑张量-张量乘法的三种一般情况:外积(outer product)、缩约积(contracted product)和内积(inner product)。

7.1 外积(outer product)

在这里插入图片描述

a = tensor(rand([3,4]));
b = tensor(ones(5,1));
T = ttt(a,b);

7.2 缩约积(contracted product)

两个张量的缩合积是前两小节所讨论的张量-向量和张量-矩阵乘法的推广。
在这里插入图片描述

7.3 内积(inner product)

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

8. 将tensor转化为matrix

把张量的元素重新排列成一个矩阵是很有用的。虽然这个过程有很多名字,我们把它称为“矩阵化(matricizing)”,因为张量的矩阵化类似于矩阵的向量化。也将这个过程称为“展开(unfolding)”。它有时也被称为“扁平化(flattening)”。
在这里插入图片描述

t1 = tenmat(T,1);
t2 = double(t1);
t1.tsize
t1.rindices
t1.cindices
  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大浪淘沙_scc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值